Eu recebi o aparentemente comum erro "muitos descritores de arquivos" no nginx. Após muita pesquisa, a solução é claramente aumentar o número de descritores de arquivos disponíveis para o nginx. Mas não há informações suficientes para me sentir confortável fazendo isso de uma maneira significativa e segura. Aqui estão os principais pontos que a maioria dos tópicos de fórum / email abrange:
- o sistema operacional possui seu próprio limite total de descritores de arquivos (no meu sistema,
cat /proc/sys/fs/file-max
gera "100678") - cada usuário também pode ter seu próprio limite (mas no meu sistema, executando
ulimit
como qualquer usuário gera "ilimitado", veja a atualização na parte inferior com mais detalhes ) - algumas pessoas disseram algo parecido com o que essa pessoa disse: 'A diretiva worker_rlimit_nofile não especifica "quantos", é o limite do sistema operacional que especifica. A diretiva worker_rlimit_nofile apenas permite uma maneira rápida e suja de aumentar esse limite, se não for suficiente. ' Então, acho que a implicação é que é "melhor" definir o limite para o usuário do nginx OS, em vez de na configuração?
Posso apenas inserir um valor worker_rlimit_nofile maior que o número de conexões por trabalhador e chamá-lo por dia, mas acho que realmente não sei o que está acontecendo aqui.
- por que o limite por trabalhador seria menor que o limite do sistema operacional?
- Como descubro qual é meu limite agora?
update : para usuários raiz e normais, o ulimit gera "ilimitado", MAS ulimit -Hn
e ulimit -Sn
os 1024
setsebool -P httpd_setrlimit 1
para que o nginx tenha permissões para definir seu rlimit.Tem que verificar a fonte para ser honesto, mas é bastante baixo.
Eu usei
worker_rlimit_nofile 15000;
e não tive problemas. Você pode aumentá-lo com segurança, porém, a chance de ficar sem descritores de arquivo é minúscula.fonte