Monitorar limites de arquivos abertos, etc

4

Temos atingido o limite máximo de arquivos abertos em alguns serviços recentemente. Há também um monte de outros limites no lugar. Existe uma maneira de monitorar o quão perto os processos estão desses limites para que possamos ser alertados quando chegar o momento de aumentar os limites ou consertar a causa raiz? Na mesma nota, é possível visualizar um log desses eventos para sabermos quando ocorre uma falha por causa de um desses limites?

    
por marcog 12.11.2012 / 23:10

2 respostas

5

Sim, você pode. /proc/<pid>/fd lista todos os descritores de arquivos abertos. O uso da memória pode ser visto em /proc/<pid>/{maps,smaps} . Basta navegar em /proc/<pid> e em arquivos do Google que você não entende:)

    
por 12.11.2012 / 23:21
5

Assumindo um servidor linux.

veja arquivos abertos globais máximos:

cat /proc/sys/fs/file-max

veja os arquivos abertos atuais globais:

cat /proc/sys/fs/file-nr

altere os arquivos abertos máximos globais:

sysctl -w fs.file-max=1000000 or edit sysctl.conf

veja limite no usuário atual:

ulimit -Hn   (hard limit)
ulimit -Sn   (soft limit)

alterar limite no usuário: edite /etc/security/limit.conf para definir limites para um servidor web, por exemplo

apache2 soft nofile 4096
apache2 hard nofile 10000

Você pode ter um script que passe por /proc e forneça algumas estatísticas:

for pid in $(pgrep apache2); do ls /proc/$pid/fd | wc -l; done
    
por 12.11.2012 / 23:43