Trop de fichiers ouverts - comment trouver le coupable

52

En exécutant 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 quels sont les responsables de tous les fichiers ouverts? J'ai une liste de processus suspects, mais s'ils ne s'avèrent pas être les coupables, des instructions qui ne reposent pas sur la connaissance du processus à vérifier seraient utiles.

    
posée Andrew Grimm 28.08.2012 - 05:07
la source

2 réponses

52

Vous pouvez utiliser lsof pour comprendre qui ouvre autant de fichiers. En général, c'est un serveur (Web) qui ouvre autant de fichiers, mais lsof va sûrement vous aider à identifier la cause.

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

  • tue le processus / arrête le programme
  • élever le lien ulimit

Si la sortie de lsof est très importante, 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  " " ; }' | sort -rn | uniq -c | sort -rn | head -20
vim ~/Desktop/lsof.log
    
réponse donnée Andrea Olivato 28.08.2012 - 17:13
la source
17

Au cas où quelqu'un en aurait besoin ...

ulimit -a

affichera toutes les limites actuelles. Plus précisément, ulimit -n 70000 définira la limite du descripteur de fichier.

Aussi ...

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 sur ...

Comment puis-je augmenter la limite des fichiers ouverts pour un utilisateur non root?

    
réponse donnée kervin 04.05.2014 - 20:10
la source

Lire d'autres questions sur les étiquettes