Troppi file aperti - come trovare il colpevole

53

Durante l'esecuzione di tail -f filename , ho ricevuto il seguente messaggio:

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

È un potenziale problema?

Come faccio a diagnosticare ciò che è responsabile di tutti i file aperti? Ho una lista di processi sospetti, ma se non si rivelano i colpevoli, le istruzioni che non si basano sulla conoscenza di quale processo controllare sarebbe utile.

    
posta Andrew Grimm 28.08.2012 - 05:07

2 risposte

53

Puoi usare lsof per capire chi apre tanti file. Di solito è un server (web) che apre così tanti file, ma lsof ti aiuterà sicuramente a identificare la causa.

Una volta capito chi è il cattivo puoi

  • uccide il processo / ferma il programma
  • solleva il ulimit link

Se l'output di lsof è abbastanza grande, prova a reindirizzare a un file e poi apri il file

Esempio (potrebbe essere necessario Ctrl + C il primo comando)

lsof > ~/Desktop/lsof.log
cat ~/Desktop/lsof.log | awk '{ print  " " ; }' | sort -rn | uniq -c | sort -rn | head -20
vim ~/Desktop/lsof.log
    
risposta data Andrea Olivato 28.08.2012 - 17:13
17

Nel caso in cui qualcun altro ne abbia bisogno ...

ulimit -a

Mostrerà tutti i limiti attuali. Nello specifico ulimit -n 70000 imposterà il limite del descrittore di file.

Anche ...

cat /proc/sys/fs/file-max

Visualizza / imposta il limite del kernel se modificato.

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

Una spiegazione molto più dettagliata può essere trovata in ...

Come faccio aumentare il limite di file aperti per un utente non root?

    
risposta data kervin 04.05.2014 - 20:10

Leggi altre domande sui tag