Quello che sta succedendo è che la tua applicazione e / o gli ApplicationSpawner si stanno chiudendo a causa del timeout. Per elaborare la tua nuova richiesta, Passenger deve avviare una nuova copia dell'applicazione, che può richiedere diversi secondi, anche su una macchina veloce. Per risolvere il problema, ci sono alcune opzioni di configurazione di Apache che puoi usare per mantenere in vita la tua applicazione.
Ecco cosa ho fatto nello specifico sui miei server. PassengerSpawnMethod e PassengerMaxPreloaderIdleTime sono le opzioni di configurazione più importanti nella tua situazione.
PassengerSpawnMethod smart
PassengerPoolIdleTime 1000
PassengerMaxPreloaderIdleTime 0
PassengerMaxRequests 5000
Utilizzando la modalità di generazione "intelligente" e disattivando PassengerMaxPreloaderIdleTime, Passenger manterrà in memoria 1 copia della tua applicazione in ogni momento (dopo la prima richiesta dopo l'avvio di Apache). I singoli Application
ascoltatori verranno modificati fork
da questa copia, che è un'operazione super economica. Succede così velocemente che non puoi dire se la tua applicazione ha dovuto generare o meno un ascoltatore.
Se la tua app non è compatibile con lo spawning intelligente, ti consiglio di tenere un PassengerPoolIdleTime di grandi dimensioni e di colpire periodicamente il tuo sito usando curl e un cronjob o monit o qualcosa del genere per assicurarti che l'ascoltatore rimanga in vita.
La Guida per l'utente del passeggero è un ottimo riferimento per queste e altre opzioni di configurazione.
modifica : se la tua app non è compatibile con lo spawning intelligente, ci sono alcune nuove opzioni che sono molto belle
PassengerPreStart http://myexample.com/
PassengerPreStart http://myexample2.com:3500/
PassengerMinInstances 3
Quindi, se combini PassengerPreStart e PassengerMinInstances, Passenger eseguirà 3 istanze immediatamente dopo il caricamento di apache e manterrà sempre almeno 3 istanze, quindi i tuoi utenti raramente (se non mai) vedranno un ritardo.
Oppure, se stai già utilizzando lo spawning intelligente (consigliato) PassengerMaxPreloaderIdleTime 0
, puoi aggiungerlo PassengerPreStart
per ottenere l'ulteriore vantaggio dell'avvio immediato.
Mille grazie agli eroi di phusion.nl !