Temos um servidor Ubuntu (22.04) com Nginx (1.18).
ulimit -n
retorna 1024 e em /etc/nginx/nginx.conf existem as seguintes configurações:
user www-data;
worker_processes auto;
events {
worker_connections 1024;
}
Temos lido um pouco de documentação e vários blogs sobre "otimização do Nginx", sobre descritores de arquivos, conexões de trabalho, etc. Por exemplo: https://docs.nginx.com/nginx-management-suite/admin-guides/configuration /configurar gateway/
Talvez você também queira ajustar o número máximo de descritores de arquivo (worker_rlimit_nofile) que um processo pode abrir para alinhar com o número de conexões de trabalho. Observe que rlimit_nofile é uma configuração do sistema, portanto, verifique os limites de usuário para sua distribuição Linux, pois eles podem ser mais restritivos.
Digamos que precisamos dobrar o número de conexões de trabalhadores, de 1.024 para 2.048 . Se modificássemos a configuração (e reiniciassemos o nginx):
user www-data;
worker_processes auto;
worker_rlimit_nofile 2048; // <<< added
events {
worker_connections 2048; // <<< changed
}
Isso é suficiente, considerando que ulimit -n
retorna 1024 ? Ou essas alterações não são suficientes e não terão efeito, sendo necessário aumentar o limite flexível do sistema para descritores de arquivos executando:
ulimit -n 2048
ou adicionando a seguinte linha ao arquivo de configuração do shell (por exemplo, /etc/security/limits.conf):
www-data soft nofile 2048
www-data hard nofile 2048
(não tenho certeza se isso é tudo ou se existem mais arquivos de configuração para modificar)