AWS Elastic Beanstalk: error de socket en el servidor Puma cuando hay más de 300 conexiones en un momento dado

AWS Elastic Beanstalk: error de socket en el servidor Puma cuando hay más de 300 conexiones en un momento dado

He estado lidiando con un problema posiblemente extraño en un entorno de AWS Elastic Beanstalk. Recibo el siguiente error de nginx cuando hay más de 300 conexiones en una sola instancia en un momento dado:

2018/03/23 20:56:53 [error] 5431#0: *4121 connect() a unix:///var/run/puma/my_app.sock falló (11: Recurso no disponible temporalmente) al conectarse a upstream, cliente:

Respuesta1

Bueno, analizando el problema y las configuraciones, la falla está relacionada con el límite de recursos excedido. Posiblemente dos de los recursos del sistema operativo:

  • abrir descriptores de archivos
  • procesos disponibles para un solo usuario. Solo para eliminar la limitación del proceso, mantenga su valor nproc en la instancia EC2 en un valor muy alto o ilimitado.

    sudo vi /etc/security/limits.conf

Referirseeste enlacepara una breve idea. Entonces, dado que no puede tener trabajador_rlimit_nofile más que el ulimit establecido en el servidor, el primer enfoque sería calcular los parámetros de nginx y modificarlos según los requisitos:

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

Esta guía de escalapuede ayudarte a cuantificar los valores que debes incrementar y definir. Una vez que haya terminado de definir los valores para su servidor web, deberá actualizar los límites con valores mayores o iguales. Verifique hasta qué nivel de simultaneidad de usuarios funciona el servidor para ayudarlo a escalar.

información relacionada