Ich habe eine Rails-App, die unter ubuntu 14.04
ausgeführt wird und von Nginx
und passenger
bedient wird. Es gibt Zeiten, wenn die Anwendung die folgenden Fehler geben gehtSo verwalten Sie veraltete Mitarbeiter, die zu Ausfallzeiten führen
[ 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
Und die App bleibt nach unten, wenn die Nginx
neu gestartet wird. Dies ist wahrscheinlich auf die abgestandenen Arbeiter zurückzuführen, die nicht mehr dienen und die Erinnerung auffressen (korrigiere mich, wenn ich falsch liege).
Ich habe die max pool size
von Beifahrer auf 6
als meine App Instanz 150-200 Mb
des Speichers mit einer 2GB RAM
gesetzt.
Ich dachte daran, ein Skript zu schreiben, das regelmäßig nach den abgestandenen Arbeitern sucht und, falls gefunden, starte die Nginx
neu oder mache eine touch tmp/restart.txt
. Ich möchte auch wissen, wie man nach veralteten Arbeitern sucht oder ob die passenger
nicht wie erwartet funktioniert.
Eine andere Lösung, die ich dachte, ist regelmäßig Nginx
neu zu starten oder eine touch tmp/restart.txt
nach einem regelmäßigen Zeitintervall, sagen wir eine Stunde.
Ich habe auch die Passagier Dokumentation über die drei Möglichkeiten, einen Neustart des App
Passagier-config Neustart-App
restart.txt
Neustarten Nginx
Die ersten beiden Fälle werden nicht dro p jede Anfrage während des Neustarts der App, aber möglicherweise keine Stillstandszeit während des Neustarts der App, da der Neustart der App abhängig von der App einige Zeit dauern kann.
Ich möchte wissen, was ein guter Weg wäre oder gibt es eine andere Möglichkeit, dieses Problem loszuwerden.