Lo que está sucediendo es que su aplicación y / o ApplicationSpawners se están cerrando debido al tiempo de espera. Para procesar su nueva solicitud, Passenger debe iniciar una nueva copia de su solicitud, lo que puede demorar varios segundos, incluso en una máquina rápida. Para solucionar el problema, existen algunas opciones de configuración de Apache que puede utilizar para mantener viva su aplicación.
Esto es específicamente lo que hice en mis servidores. PassengerSpawnMethod y PassengerMaxPreloaderIdleTime son las opciones de configuración más importantes en su situación.
PassengerSpawnMethod smart
PassengerPoolIdleTime 1000
PassengerMaxPreloaderIdleTime 0
PassengerMaxRequests 5000
Al usar el modo de generación "inteligente" y desactivar PassengerMaxPreloaderIdleTime, Passenger mantendrá 1 copia de su aplicación en la memoria en todo momento (después de la primera solicitud después de iniciar Apache). Los Application
oyentes individuales serán fork
editados a partir de esta copia, que es una operación súper barata. Sucede tan rápido que no puede saber si su aplicación ha tenido que generar un oyente.
Si su aplicación es incompatible con la generación inteligente, le recomiendo mantener un PassengerPoolIdleTime grande y visitar su sitio periódicamente usando curl y un cronjob o monit o algo para asegurarse de que el oyente permanezca vivo.
La Guía del usuario del pasajero es una excelente referencia para estas y más opciones de configuración.
editar : si su aplicación es incompatible con el spawning inteligente, hay algunas opciones nuevas que son muy buenas
PassengerPreStart http://myexample.com/
PassengerPreStart http://myexample2.com:3500/
PassengerMinInstances 3
Por lo tanto, si combina PassengerPreStart y PassengerMinInstances, Passenger activará 3 instancias inmediatamente después de que se cargue Apache y siempre mantendrá al menos 3 instancias, por lo que sus usuarios rara vez (si es que alguna vez) verán un retraso.
O, si ya está utilizando el spawning inteligente (recomendado) PassengerMaxPreloaderIdleTime 0
, puede agregarlo PassengerPreStart
para obtener el beneficio adicional del inicio inmediato.
¡Muchas gracias a los héroes de phusion.nl !