AWS Elastic Beanstalk - Falha de soquete no servidor Puma quando há mais de 300 conexões em um determinado momento

AWS Elastic Beanstalk - Falha de soquete no servidor Puma quando há mais de 300 conexões em um determinado momento

Tenho lidado com um problema provavelmente estranho em um ambiente AWS Elastic Beanstalk. Estou recebendo o seguinte erro nginx quando há mais de 300 conexões em uma única instância em um determinado momento:

23/03/2018 20:56:53 [erro] 5431#0: *4121 connect() to unix:///var/run/puma/my_app.sock falhou (11: Recurso temporariamente indisponível) ao conectar ao upstream, cliente:

Responder1

Bem, analisando o problema e as configurações, a falha está relacionada ao limite de recursos excedido. Possivelmente dois dos recursos do sistema operacional:

  • abrir descritores de arquivo
  • processos disponíveis para um único usuário. Apenas para eliminar a limitação do processo, mantenha seu valor nproc na instância EC2 em um valor muito alto ou ilimitado.

    sudo vi /etc/security/limits.conf

Referiresse linkpara uma breve ideia. Então, como você não pode ter work_rlimit_nofile mais do que o ulimit definido no servidor, a primeira abordagem seria calcular os parâmetros nginx e ajustar conforme o requisito:

Podemos servir worker_processes * worker_connections / ( keepalive_timout * 2 ) users per second.

Este guia de dimensionamentopode ajudá-lo a quantificar os valores que você deve aumentar e definir. Depois de definir os valores do seu servidor web, você precisará atualizar os limites com valores maiores ou iguais. Verifique em qual simultaneidade de usuários o servidor funciona para ajudá-lo a aumentar a escala.

informação relacionada