2013-01-19 70 views
3

我有一個約30個Ruby On Rails應用程序的服務器。約30個RoR應用程序等待(凍結)1個應用程序啓動..如何解決這個問題?

當我(重新)啓動30個應用程序中的1個時,所有其他應用程序都無法訪問,他們似乎在等待1個應用程序重新啓動。

即使命令:乘客身份,似乎等待直到1應用程序(重新)開始。

這是正常的行爲嗎? 或者如何解決這個問題?

(虛擬)服務器規格:

  • CPU:3芯X 2.2GHz的
  • 內存:4GB
  • Hardisk:40GB

服務器軟件:

  • CentOS版本6.3(最終版)
  • Nginx的版本:nginx的/ 1.0.12
  • 紅寶石1.9.3p125(2012-02-16的修訂34643)[x86_64的Linux的]
  • 的Phusion客運版本3.0.18

的Nginx /乘客配置:

passenger_max_pool_size 50; 
passenger_min_instances 1; 
passenger_max_instances_per_app 2; 

如果需要,我很樂意提供更多詳情。

更新** 安裝客運企業和nginx的,現在的應用程序不啓動打擾對方了..所以我想這個問題得到了固定與passenger_rolling_restarts;

+0

等等,你是說你有一臺服務器運行30個獨立的應用程序?我想你可能不能期望像'正常行爲',如果是這樣的話...... – pschuegr

+0

是的,每個1或2個實例有30個不同的應用程序.. 只有它不重要,如果它是5或60個應用程序,問題是他們在繼續進行流程處理之前等待乘客應用產品。 – Bartuzz

回答

2

嗯......看起來這可能是Passenger的開源版本的一個「特徵」。從http://phusionpassenger.com/enterprise

在乘客的Phusion重新啓動應用程序的開源版本包括關閉所有應用程序和spawnining新的。由於啓動新流程需要很長時間(取決於應用程序),因此訪問者在重新啓動過程中可能會遇到響應速度緩慢的情況。隨着滾動重新啓動,Phusion Passenger Enterprise將在後臺重新啓動您的應用程序進程。

因此,選項似乎是:

1)升級到乘客

2)開關的企業版到一些其他的服務器。

Yuck。

+0

在此處找到該選項: http://www.modrails.com/documentation/Users%20guide%20Nginx.html#PassengerRollingRestarts – Bartuzz

0

其實,這兩個問題都在這裏工作:

  1. 當不使用滾動重新啓動後,您的訪客將不得不等待,直到重新啓動完成。正如drosboro所說的那樣。
  2. 此外,Phusion Passenger 3在產生應用程序的第一個進程時會鎖定整個應用程序池。在此期間,不能處理任何請求。隨後的進程派生在後臺完成,滾動重新啓動派生也在後臺完成,因此它們不會影響請求。這個鎖定限制已經在Phusion Passenger 4(當然還有Phusion Passenger Enterprise 4)中完全解除:所有內容都是異步的。
相關問題