Too many open files
Todo processo no Linux roda com limites. Um desses limites é o número de arquivos e sockets de rede que um processo pode abrir ao mesmo tempo. Quando o limite é baixo demais, você pode ver o erro Too many open files.
O Astra e os limites de arquivos abertos
Seção intitulada “O Astra e os limites de arquivos abertos”No Astra, esse erro pode aparecer quando o limite do sistema não está alto o suficiente. Por padrão, se você instalou o Astra com o comando astra init (como descrito no nosso guia de início rápido), o limite é definido em 65536 arquivos abertos. Esse valor costuma ser suficiente para a maioria dos casos.
Se você inicia o Astra de outra forma, precisa garantir que o limite de arquivos abertos esteja configurado corretamente. Veja abaixo os casos mais comuns.
Iniciando com init.d
Seção intitulada “Iniciando com init.d”Ao usar um script init.d, você precisa aumentar o limite antes de iniciar o Astra. Adicione a linha ulimit -n 65536 antes do comando que inicia o Astra.
Exemplo de script:
if [ "$1" = "start" ]; then /usr/bin/astra -c /etc/astra/astra.conf -p 8000 --pid /var/run/astra.pid --log /var/log/astra.log --daemonelif [ "$1" = "stop" ]; then if [ -f /var/run/astra.pid ]; then kill $(cat /var/run/astra.pid) fielif [ "$1" = "restart" ]; then $0 stop sleep 1 $0 startfiIniciando com systemd
Seção intitulada “Iniciando com systemd”Para serviços systemd, você deve definir o limite dentro do arquivo de serviço. Na seção [Service], adicione:
[Service]Type=simpleLimitNOFILE=65536ExecStart=/usr/bin/astra -c /etc/astra/astra.conf -p 8000 --log /var/log/astra.log --no-stdoutIsso garante que o Astra consiga abrir arquivos e sockets suficientes sem cair no erro.
Verificando o limite atual
Seção intitulada “Verificando o limite atual”Você pode verificar o limite atual de arquivos abertos de um processo em execução com os comandos ulimit ou cat.
Se você estiver no mesmo shell em que o Astra está rodando, execute:
ulimit -nIsso mostra o número máximo de arquivos abertos para esse shell (e para qualquer processo iniciado a partir dele).
Se o Astra já estiver rodando como daemon, descubra o ID do processo (PID) e verifique diretamente:
pidof astraIsso retorna o PID do processo do Astra. Depois execute:
cat /proc/<PID>/limits | grep "open files"Exemplo de saída:
Max open files 65536 65536 files