Tôi có ứng dụng đường ray chạy trên máy ubuntu 14.04
và được phục vụ theo Nginx
và passenger
. Đôi khi ứng dụng gặp trục trặc khi đưa ra lỗi sauCách quản lý công nhân cũ của hành khách gây ra thời gian chết
[ 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
Và ứng dụng vẫn tiếp tục trừ khi Nginx
đang được khởi động lại. Điều này có thể do những công nhân cũ không phục vụ nữa và ăn bộ nhớ (đúng với tôi nếu tôi sai).
Tôi đã đặt max pool size
hành khách thành 6
làm phiên bản ứng dụng của mình mất 150-200 Mb
bộ nhớ với 2GB RAM
.
Tôi đã suy nghĩ để viết một tập lệnh thường xuyên kiểm tra các công nhân cũ và nếu tìm thấy khởi động lại Nginx
hoặc làm một touch tmp/restart.txt
. Tôi cũng muốn biết cách kiểm tra các công nhân cũ hoặc nếu passenger
không hoạt động như mong đợi.
Một giải pháp khác mà tôi nghĩ là thường xuyên khởi động lại Nginx
hoặc thực hiện touch tmp/restart.txt
sau một khoảng thời gian thông thường, giả sử một giờ.
Tôi cũng đã đọc các tài liệu hướng dẫn hành khách về ba cách để khởi động lại ứng dụng
hành khách-config khởi động lại ứng dụng
restart.txt
Khởi động lại Nginx
Hai trường hợp đầu tiên sẽ không giảm p bất kỳ yêu cầu trong khi khởi động lại ứng dụng nhưng có thể có thời gian không xuống trong khi khởi động lại ứng dụng khi khởi động lại ứng dụng có thể mất một thời gian tùy thuộc vào ứng dụng.
Tôi muốn biết đó sẽ là một cách hay hoặc có cách nào khác để giải quyết vấn đề này.