2016-02-12 10 views
8

ubuntu 14.04 makinede çalışan bir raylı sistem uygulaması var ve Nginx ve passenger aracılığıyla hizmet veriyor. Uygulamanın şu hatayıDuruş süresine neden olan yolcu işçileri nasıl yönetilir?

[ 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 

vererek iner Ve Nginx yeniden ediliyor sürece uygulaması aşağı kalır zamanlar vardır. Bu muhtemelen artık hizmet etmeyen ve hafızayı tüketen eski işçilerden kaynaklanıyor (eğer yanılıyorsam düzeltin).

yolcunun 6 numaralı telefonuna, 2GB RAM numaralı bellek alanımdaki belleğini alıyorum.

Eskiyen işçileri düzenli olarak kontrol eden ve varsa Nginx'u yeniden başlatan veya touch tmp/restart.txt numaralı bir senaryo yazmayı düşünüyordum. Ayrıca eski işçileri nasıl kontrol edeceğimi veya passenger'un beklendiği gibi çalışmadığını bilmek istiyorum. Düzenli olarak, Nginx düzenli olarak yeniden başlatmayı veya düzenli aralıklarla bir saat sonra touch tmp/restart.txt yapmayı düşündüğüm başka bir çözüm.

Ben de uygulamasını mı

  • yolcu-config yeniden başlatma-app

  • restart.txt

  • yeniden başlatma Nginx

  • yeniden başlatarak üç yolları hakkında yolcu belgelerini okudum

İlk iki durum düşmeyecek Uygulamayı yeniden başlatırken herhangi bir istekte bulunabilirsiniz, ancak uygulamanın yeniden başlatılması sırasında uygulamayı yeniden başlatırken sıfırdan kalma süresine sahip olabilir. Bu, uygulamaya bağlı olarak biraz zaman alabilir.

İyi bir yolun hangisi olacağını bilmek istiyorum veya bu problemden kurtulmanın başka bir yolu var.

cevap

0

Öncelikle passenger configuration options'u gerçekten kontrol etmelisiniz. İkincisi, aslında yolcu işçinizi asan ne olduğunu anlamanız gerekir. Bunun için bu süreçlerde neler olup bittiğini tam olarak görmediğiniz için bir yolcu günlüğü parametresi vardır (ki bunu izleyebilirsiniz). :) Şimdi eldeki ilk sorunu konusunda

- işçiyi zorlamak için dilek yeniden - hiçbir şeyin yaparken asılı işlemek için aslında nedeniyle olmadığını: Birlikte

passenger_min_instances 
passenger_max_instances 

birleştirebilirsiniz

passenger_pool_idle_time/passenger_max_requests 

Verilen linkte bu komutlar hakkında biraz bilgi edinin, daha detaylı olarak ele alınacaktır.