我有一臺運行在ubuntu 14.04
機器上的rails應用程序,它由Nginx
和passenger
提供服務。有些時候,應用程序宕機給下面的錯誤如何管理導致停機時間的過時工人
[ 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
,除非正在重新啓動Nginx
是該應用遺存下來。這可能是由於陳舊的工人不再服用和吃掉記憶(如果我錯了,糾正我)。
我已經將乘客的max pool size
設置爲6
,因爲我的應用程序實例需要150-200 Mb
的存儲空間,並配有2GB RAM
。
我想寫一個腳本,定期檢查過時的工人,如果發現重新啓動Nginx
或做一個touch tmp/restart.txt
。我也想知道如何檢查陳舊的工人,或者如果passenger
未按預期工作。
我認爲的另一個解決方案是定期重新啓動Nginx
或在規定的時間間隔(例如1小時)後執行touch tmp/restart.txt
。
我也看到乘客文檔有關重新啓動應用程序
乘客配置重啓應用
restart.txt
重啓Nginx的
的三種方式
前兩種情況不會出現p重新啓動應用程序時的任何請求,但在重新啓動應用程序時可能沒有停機時間,因爲重新啓動應用程序可能需要一些時間,具體取決於應用程序。
我想知道哪個是一個好方法,或者有沒有其他辦法可以擺脫這個問題。