
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.