J'ai un long processus en cours chez Debian. À un moment donné, lancez une erreur:
Trop de fichiers ouverts.
Fonctionnement:
ulimit -a
spectacles:
fichiers ouverts (-n) 1024
Je souhaite augmenter le nombre de fichiers ouverts en 2 fois. Après l'exécution
ulimit -n 2048
la limite est active jusqu'à la fin de ma session, ce qui n'est pas applicable à la tâche.
Comment puis-je augmenter de façon permanente le nombre de fichiers ouverts?
la source
Il y a aussi un "total max" de fichiers ouverts défini dans le noyau, vous pouvez vérifier le paramètre actuel avec:
Et définissez une nouvelle valeur avec:
Si vous souhaitez conserver la configuration entre les redémarrages, ajoutez
à
Pour vérifier l'utilisation maximale actuelle du fichier:
la source
0
, cela signifie simplement que le nombre de49152 0 18446744073709551615
. Je ne comprends pas pourquoi les deux premières colonnes ne correspondent pas à la troisième. Et si j'ai 1 800 milliards de milliards disponibles, je ne vois pas comment je les ai tous utilisés.Comme d'autres l'ont dit, vous pouvez appliquer des limites spécifiques par utilisateur ou groupe dans /etc/security/limits.conf.
Remarque: ulimit -n affiche la limite souple.
vous montrera la limite stricte.
Cela rend la sortie ulimit -a et ulimit -n assez déroutante si, par exemple, vous augmentiez le nombre de fichiers de 1024 à 4096, comme vous vous attendez à voir la sortie de limite stricte, mais vous voyez toujours 1024, qui est le soft limite.
N'oubliez pas non plus que ces limites sont appliquées par connexion, alors reconnectez-vous dans un nouveau shell et vérifiez vos modifications, ne vous attendez pas à ce qu'elles soient propagées aux connexions existantes.
la source
Sachez que si vous exécutez votre processus en paramétrant start-stop-daemon, ulimits dans /etc/security/limits.conf ne fonctionne pas. Si vous souhaitez par exemple augmenter la limite de fichiers ouverts pour tomcat à 20000, vous devez les ajouter aux lignes
/etc/default/tomcat
:J'ai rencontré ce problème sur debian 6.0.4. Pour les autres processus, les réponses données devraient aider.
la source
Cela dépend de la façon dont vous démarrez votre processus de longue durée. S'il est démarré au démarrage (via les scripts /etc/rcX.d/*), vous devez mettre un appel ulimit dans votre script de démarrage car la limite par défaut est définie par le noyau et n'est pas ajustable sans la recompiler.
L'utilisation
/etc/security/limits.conf
pourrait fonctionner si vous l'utilisezcron
par exemple avec une entrée comme celle-ci:Cela devrait fonctionner car /etc/pam.d/cron active pam_limits.so.
la source
Vous pouvez l'ajouter dans /etc/security/limits.conf
enregistrez puis redémarrez.
la source
Une très bonne commande est
ulimit -n
mais il y a un problème avec trop de connexion et trop de fichiers ouverts:la source
ulimit -a
, nonulimit -n
.