Ho un'app per rails in esecuzione su ubuntu 14.04
macchina ed è servita da Nginx
e passenger
. Ci sono momenti in cui l'applicazione va giù dando il seguente erroreCome gestire i passeggeri stantii che causano tempi di inattività
[ agents/LoggingAgent/Main.cpp:338 ]: Signal received. Gracefully shutting down... (send signal 2 more time(s) to force shutdown)
[ agents/LoggingAgent/Main.cpp:400 ]: Received command to shutdown gracefully. Waiting until all clients have disconnected...
[ ServerKit/Server.h:453 ]: [LoggerAdminServer] Shutdown finished
[ agents/LoggingAgent/Main.cpp:425 ]: PassengerAgent logger shutdown finished
[ ServerKit/Server.h:453 ]: [ServerThr.1] Shutdown finished
[ ServerKit/Server.h:453 ]: [ServerThr.2] Shutdown finished
[ ServerKit/Server.h:453 ]: [AdminServer] Shutdown finished
[ agents/HelperAgent/Main.cpp:724 ]: Disconnecting long-running connections for process 19431, application /public#default
[ agents/HelperAgent/Main.cpp:724 ]: Disconnecting long-running connections for process 19440, application /public#default
[ agents/Watchdog/Main.cpp:1255 ]: Starting PassengerAgent watchdog...
[ agents/HelperAgent/Main.cpp:883 ]: Starting PassengerAgent server...
[ agents/HelperAgent/Main.cpp:232 ]: PassengerAgent server running in multi-application mode.
[ agents/HelperAgent/Main.cpp:637 ]: PassengerAgent server online, PID 19637
[ agents/LoggingAgent/Main.cpp:431 ]: Starting PassengerAgent logger...
[ agents/LoggingAgent/Main.cpp:312 ]: PassengerAgent logger online, PID 19645
[ agents/HelperAgent/Main.cpp:868 ]: PassengerAgent server shutdown finished
e l'applicazione rimane in basso a meno che il Nginx
viene riavviato. Ciò è probabilmente dovuto agli operai stantii che non servono più e divorano la memoria (correggimi se sbaglio).
Ho impostato il max pool size
del passeggero a 6
come istanza della mia app prendedi memoria con un 2GB RAM
.
Stavo pensando di scrivere una sceneggiatura che controlli regolarmente gli operai stantii e, se trovata, riavvia il Nginx
o fai un touch tmp/restart.txt
. Voglio anche sapere come controllare gli operai stantii o se il passenger
non funziona come previsto.
Un'altra soluzione che ho pensato è di riavviare regolarmente Nginx
o fare un touch tmp/restart.txt
dopo un intervallo regolare di tempo, diciamo un'ora.
Ho anche letto la documentazione dei passeggeri circa i tre modi di riavviare l'applicazione
passeggero-config-app restart
restart.txt
Riavvio Nginx
I primi due casi non saranno dro p eventuali richieste durante il riavvio dell'app ma potrebbero avere zero tempi morti durante il riavvio dell'app poiché il riavvio dell'app potrebbe richiedere del tempo a seconda dell'app.
Voglio sapere quale sarebbe un buon modo o c'è un altro modo per sbarazzarsi di questo problema.