Sous Linux, définissez le nombre maximum de fichiers ouverts sur illimité. Possible?
Question
Est-il possible de définir le nombre maximal de fichiers ouverts sur une " infinie " valeur ou doit-il être un nombre?
J'étais obligé de définir la limite de descripteur pour un utilisateur de démon sur " unlimited " et j'essaie de déterminer si c'est possible ou comment le faire. J'ai vu des listes de diffusion se référer à un & Quot; max & Quot; valeur pouvant être utilisée (comme dans: & "; monutilisateur nofile max &"; mais, jusqu'à présent, les pages de manuel et les références que j'ai consultées ne la corrigent pas.
Si je ne peux pas utiliser 'max' ou similaire, j'aimerais savoir comment déterminer le nombre maximal de fichiers (en théorie) afin d'avoir une base pour le nombre que je choisis. Je ne veux pas utiliser 100000000 ou quelque chose du genre s'il existe un moyen plus raisonnable d'obtenir une limite supérieure.
J'utilise RHEL 5 si c'est important.
Mise à jour: je suis un idiot pour écrire des questions. Idéalement, j'aimerais le faire dans le fichier limits.conf (d'où provient & "Max &"). Est-ce que cela change les réponses?
Merci pour les commentaires. C'est pour une instance JBOSS et non pour un démon que j'écris, donc je ne sais pas si setrlimit () m'est utile. Cependant, Jefromi - j'aime bien la définition d'Infinity :) J'ai vu un article suggérant qu'un descripteur de fichier est & "; Deux courts métrages et un pointeur &"; je devrais donc pouvoir calculer la limite supérieure approximative.
La solution
POSIX vous permet de définir la RLIMIT_NOFILE
limite de ressources sur RLIM_INFINITY
à l'aide de setrlimit()
. Cela signifie que le système n'appliquera pas cette limite de ressources. Bien entendu, vous serez toujours limité par la mise en œuvre (par exemple, MAXINT
) et par toute autre limitation de ressources (par exemple, la mémoire disponible).
Mise à jour: RHEL 5 a une valeur maximale de 1048576 (2 20 ) pour cette limite (NR_OPEN
dans /usr/include/linux/fs.h
) et n'acceptera aucune valeur supérieure. valeur incluant l'infini, même pour root. Ainsi, sous RHEL 5, vous pouvez utiliser cette valeur dans /etc/security/limits.conf
et elle est aussi proche que possible de l'infini.
Il n'y a pas longtemps un correctif du noyau Linux a été appliqué pour permettre à cette limite d'être définie à l'infini, cependant il a depuis été annulé comme résultat de conséquences inattendues .
Autres conseils
Essayez la ligne
<domain> -
en remplaçant <domain>
par le nom d'utilisateur, dans le cas le plus simple.
La page de manuel de limits.conf indique
- for enforcing both soft and hard resource limits together. Note, if you specify a type of '-' but neglect to supply the item and value fields then the module will never enforce any limits on the specified user/group etc. .