web-dev-qa-db-fra.com

Trop de fichiers ouverts - comment trouver le coupable

Lors de l'exécution de tail -f filename, j'ai reçu le message suivant:

tail: inotify cannot be used, reverting to polling: Too many open files

Est-ce un problème potentiel?

Comment diagnostiquer ce qui est responsable de tous les fichiers ouverts? J'ai une liste de processus suspects, mais s'ils ne sont pas les coupables, les instructions qui ne se basent pas sur le processus à vérifier seraient utiles.

60
Andrew Grimm

Vous pouvez utiliser lsof pour comprendre qui ouvre autant de fichiers. Habituellement, c’est un serveur (Web) qui ouvre autant de fichiers, mais lsof vous aidera sûrement à en identifier la cause.

Une fois que vous comprenez qui est le méchant, vous pouvez

Si la sortie de lsof est assez énorme, essayez de la rediriger vers un fichier puis ouvrez le fichier.

Exemple (vous devrez peut-être Ctrl+C la première commande)

lsof > ~/Desktop/lsof.log
cat ~/Desktop/lsof.log | awk '{ print $2 " " $1; }' | sort -rn | uniq -c | sort -rn | head -20
vim ~/Desktop/lsof.log
66
Andrea Olivato

Si quelqu'un d'autre en a besoin ...

ulimit -a

Affiche toutes les limites actuelles. De manière spécifique, ulimit -n 70000 définira la limite de descripteur de fichier.

Également...

cat /proc/sys/fs/file-max

Affiche/définit la limite du noyau si elle est modifiée.

Sudo echo 200000 > /proc/sys/fs/file-max

Une explication beaucoup plus détaillée peut être trouvée à ...

Comment augmenter la limite de fichiers ouverts pour un utilisateur non root?

18
kervin