Sobes.tech
Middle

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:

  1. Aumentar worker_connections na 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
    }
    
  2. 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:
      # Limites específicos do utilizador
      nginx soft nofile 65536
      nginx hard nofile 65536
      
      # Alternativamente, para todos os utilizadores
      # * soft nofile 65536
      # * hard nofile 65536
      
      (Substituir nginx pelo 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 executar sysctl -p.
  3. 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
    
  4. 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.

  5. 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:

  1. Verificar e aumentar worker_connections.
  2. Verificar e aumentar os limites de ficheiros abertos para o utilizador do Nginx.
  3. Verificar e aumentar o limite global fs.file-max.
  4. 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.