2016-02-12 14 views
8

Tôi có ứng dụng đường ray chạy trên máy ubuntu 14.04 và được phục vụ theo Nginxpassenger. Đô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.

Trả lời

0

Thứ nhất, bạn thực sự nên kiểm tra passenger configuration options. Thứ hai, bạn nên thực sự tìm ra những gì thực sự treo công nhân hành khách của bạn. Cho rằng có một tham số log hành khách (mà bạn có thể theo dõi), vì nó không có vẻ như bạn đang khá chắc chắn những gì đang xảy ra trong các quá trình đó. :)

Bây giờ về vấn đề đầu tiên trong tầm tay - mong muốn của bạn để buộc người lao động khởi động lại - nếu đó là thực sự do để xử lý treo trong khi không làm gì cả: bạn có thể kết hợp

passenger_min_instances 
passenger_max_instances 

với

passenger_pool_idle_time/passenger_max_requests 

Đọc một chút về các lệnh này trên liên kết đã cho, nó sẽ đi vào chi tiết hơn.

Các vấn đề liên quan