concurrency settings passenger

concurrency - Cuál es el valor óptimo para el pasajero Phusion PassengerMaxRequestQueueSize



passenger config nginx (2)

¿Por qué deberías limitar las colas?

Cualquier solicitud que no sea manejada inmediatamente por un proceso de solicitud, se pone en cola. Por lo general, hacer cola es malo: a menudo significa que su servidor no puede manejar las solicitudes lo suficientemente rápido.

Una cola más grande significa que es menos probable que se eliminen las solicitudes. Pero esto tiene un inconveniente: durante las horas punta, cuanto mayor sea la cola, más tiempo tendrán que esperar los visitantes antes de ver una respuesta. Esto hace que hagan clic en recargar, lo que hace que la cola sea aún más larga (su solicitud anterior permanecerá en la cola; el sistema operativo no sabe que se han desconectado hasta que intenta enviar datos al visitante), o hace que se vayan. frustración.

Por lo tanto, tener un límite en la cola es algo bueno. Limita el impacto de la situación anterior.

Debe asegurarse de que las solicitudes se pongan en cola lo menos posible. Eso podría significar:

  • Haciendo su aplicación más rápida (si su carga de trabajo está vinculada a la CPU).
  • Actualización a un hardware más rápido (si su carga de trabajo está vinculada a la CPU).
  • Aumentar la configuración de concurrencia de su aplicación (si su carga de trabajo está vinculada a E / S), por ejemplo, aumentando el número de procesos o subprocesos.

Si no puede evitar que las solicitudes se pongan en cola, lo mejor que puede hacer es mantener la cola corta y mostrar un mensaje de error amigable al alcanzar el límite de la cola. Algo como: "Lo sentimos, mucha gente nos está visitando en este momento. Inténtalo de nuevo más tarde". PassengerMaxRequestQueueSize le indica cómo hacerlo.

Valor óptimo para el tamaño de la cola

Es difícil decir cuál debe ser el tamaño óptimo de la cola. Una buena regla general es: establezca el tamaño de la cola de solicitudes en el número máximo de solicitudes que puede manejar en un segundo. Dependiendo de tu situación, es posible que tengas que modificar las cosas un poco.

Esta regla de oro proviene de la noción de tráfico de ráfaga esperado . ¿Cuántas solicitudes simultáneas espera en su servidor?

Supongamos que el tamaño de la cola es de 100 y que, por cualquier motivo, recibe 150 solicitudes al mismo tiempo . Supongamos que su servidor es lo suficientemente rápido para manejar 150 solicitudes en medio segundo, por lo que sabe que no es un problema de rendimiento. Pero si tiene un tamaño de cola de solicitud de 100, entonces 50 de esas solicitudes se eliminarán con el error "Solicitar cola llena".

En tal situación, debe establecer el tamaño de la cola en el número máximo de solicitudes simultáneas que cree que puede manejar de forma segura sin problemas de rendimiento.

Sé que esto depende del hardware de la caja, pero por ejemplo, si hay 100 procesos establecidos, la cola predeterminada también es 100. ¿Tiene sentido aumentar PassengerMaxRequestQueueSize a 200 o 300? Probablemente esto depende de la memoria libre. ¿Pensamientos?

La mejor respuesta será explicar la configuración y probablemente uno o dos ejemplos, asumiendo que las solicitudes de proceso del servidor duran entre 2 y 3 segundos.

¡Gracias por adelantado!


This pregunta de SO y los documentos del pasajero here hablan más sobre cómo trabajar con esto. Si desea obtener más información sobre por qué sucede esto en su servidor, puede intentar ejecutar passenger-status (por lo general, debe ejecutar esto como root).

Si desea establecer una página de error personalizada cuando los visitantes vean este problema, puede usar lo siguiente (en Apache) para configurar una página de error personalizada:

PassengerErrorOverride on ErrorDocument 503 /error503.html

Como lo mencionó Hongli, también puede cambiar la configuración PassengerMaxRequestQueueSize a un número más alto para poner en cola más solicitudes. También puede establecer esto en 0 y deshabilitarlo (sin embargo, para la mayoría de las situaciones no es una solución óptima).

Para referencia, el mensaje de error predeterminado que verá un visitante de su sitio cuando se tope con este límite es:

This website is under heavy load We''re sorry, too many people are accessing this website at the same time. We''re working on this problem. Please try again later.