O que fazer se ocorrer uma falha ao trabalhar com nginx ao exceder 1024 conexões?
sobes.tech IA
Resposta da IA
Isto indica uma limitação no número de descritores de ficheiros abertos.
Soluções:
-
Aumentar
worker_connectionsna configuração do Nginx:// Aumentar o número máximo de conexões por processo worker events { worker_connections 4096; // ou mais, dependendo das necessidades e recursos } -
Aumentar o limite de ficheiros abertos ao nível do sistema operativo:
- Para a sessão atual do utilizador:
# Aumentar temporariamente o limite de ficheiros abertos ulimit -n 65536 - Para todo o sistema (de forma permanente):
Editar o ficheiro
/etc/security/limits.conf. Adicionar linhas:(Substituir# Limites específicos do utilizador nginx soft nofile 65536 nginx hard nofile 65536 # Alternativamente, para todos os utilizadores # * soft nofile 65536 # * hard nofile 65536nginxpelo nome do utilizador sob o qual o Nginx é executado, se for diferente.) É necessário reiniciar o sistema ou fazer logout/login para aplicar as alterações, ou executarsysctl -p.
- Para a sessão atual do utilizador:
-
Verificar configurações globais do núcleo: Certificar-se de que
fs.file-maxé suficientemente alto.# Verificar o valor atual cat /proc/sys/fs/file-max # Definir um novo valor (temporariamente) # sudo sysctl -w fs.file-max=100000 # Definir um novo valor (de forma permanente) - editar /etc/sysctl.conf # Adicionar a linha: fs.file-max = 100000 # Aplicar as alterações # sudo sysctl -p -
Certificar-se de que o utilizador do Nginx tem permissão para abrir tantos ficheiros: Verificar sob que utilizador o Nginx está a correr e que limites estão definidos para esse utilizador. Isto está relacionado com o ponto 2.
-
Reiniciar o Nginx: Após fazer alterações na configuração do Nginx ou nos limites do sistema, reiniciar.
# Reiniciar o Nginx sudo systemctl reload nginx # Ou, se não funcionar # sudo systemctl restart nginx
Prioridade na resolução:
- Verificar e aumentar
worker_connections. - Verificar e aumentar os limites de ficheiros abertos para o utilizador do Nginx.
- Verificar e aumentar o limite global
fs.file-max. - Reiniciar o Nginx.
É importante lembrar que o aumento dos limites deve ser justificado e estar relacionado com os recursos disponíveis do servidor (memória, CPU). Valores demasiado altos podem levar à instabilidade do sistema.