Muitos arquivos abertos - como encontrar o culpado

49

Ao executar tail -f filename , recebi a seguinte mensagem:

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

Esse é um problema em potencial?

Como faço para diagnosticar o que é responsável por todos os arquivos abertos? Eu tenho uma lista de processos suspeitos, mas se eles não forem os culpados, instruções que não dependem de saber qual processo verificar serão úteis.

    
por Andrew Grimm 28.08.2012 / 05:07

2 respostas

49

Você pode usar o lsof para entender quem está abrindo tantos arquivos. Geralmente é um servidor (web) que abre tantos arquivos, mas o lsof certamente ajudará você a identificar a causa.

Depois de entender quem é o cara mau, você pode

Se a saída do lsof for bastante grande, tente redirecioná-la para um arquivo e, em seguida, abra o arquivo

Exemplo (você pode ter que Ctrl + C o primeiro comando)

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

No caso de alguém precisar disso ...

ulimit -a

Exibirá todos os limites atuais. Especificamente, ulimit -n 70000 definirá o limite do descritor de arquivo.

Também ...

cat /proc/sys/fs/file-max

Exibirá / definirá o limite do kernel, se editado.

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

Uma explicação muito mais detalhada pode ser encontrada em ...

Como faço para aumentar o limite de arquivos abertos para um usuário não root?

    
por kervin 04.05.2014 / 20:10

Tags