2010-01-07 60 views
1

我有一個運行Phusion Passenger的apache2服務器。在這個機器上,我有兩個虛擬主機設置每個看起來像這樣(路徑的是第二個虛擬主機不同......但其他指令都一樣)Rails應用程序掛起和Ruby使用100%CPU

服務器名beta.mysite.us 的DocumentRoot「/無功/網絡/公測/ mysite的/公衆」

<Directory "/var/www/beta/mysite/public"> 
    RewriteEngine on 
    AllowOverride All 
    Options FollowSymLinks 
</Directory> 
# http://www.modrails.com/documentation/Users guide.html 
PassengerAppRoot "/var/www/beta/mysite" 
RailsEnv development 
PassengerMaxPoolSize 6 
PassengerDefaultUser mysite 
# PassengerHighPerformance does come at a trade off of lack of support for mod_rewrite 
PassengerHighPerformance off 
RailsSpawnMethod conservative 
RailsFrameworkSpawnerIdleTime 0 
RailsAppSpawnerIdleTime 0 
PassengerPoolIdleTime 300 

ErrorLog "/var/log/httpd/mysite-beta-error_log" 
CustomLog "/var/log/httpd/mysite-beta-access_log" common 

阿帕奇啓動正常。我可以去其中一個虛擬主機,它會加載Rails和工作。當我進入第二個虛擬主機時,ruby進程會產生(根據ps awuxf,「Rails:/ var/www/mysite/current」)並使用100%的CPU。這個過程永遠不會退出。此時,虛擬主機都沒有響應。如果我殺死了冒犯的ruby進程,另一個ruby進程會替換它並使用100%cpu。如果我殺死這些進程大約5-6次,那麼這兩個虛擬主機都會響應,但他們以某種方式運行相同的Rails應用程序?

我在這臺機器上有另一個虛擬主機,沒有設置與phusion乘客..這一個從來沒有表現出任何問題。

任何幫助/想法將不勝感激!

回答

0

我建議切換到nginx的

0

我曾面對PHUSION乘客類似的問題,在調試沒有成功。後來,我用mod_proxy切換到apache2 + mongrel。儘管如此,我已經看到了nginx的最佳穩定性。 nginx FTW :)

0

顯而易見的事情是檢查你沒有任何無意的無限循環或無法完成任何應用程序的條件。在一張太大的桌子上無意中發現一個無意中發現(:全部)的內容太容易了。

它是否立即堵塞,或者您是否有必須採取措施來觸發它?例如,加載特定的頁面,或根本不加載頁面。在初始化程序中可能會出現一些問題。

能夠啓動腳本/控制檯始終是一個好兆頭,特別是如果您可以加載記錄。你的描述中沒有很多信息。 'ps aux'輸出的複製粘貼會有所幫助。

0

是否有可能你有一些代碼造成這種情況?我們有一些apache /乘客安裝。它比你的代碼更可能比aapache/passenger更有可能。

0

(A提醒我的未來個體經營)

最近,我繼承了一個Rails 2.3.x版本/紅寶石1.8.7應用上乘客和運行的Apache2。我將RubyGems從1.3.x更新爲1.6.2,並立即注意到一個紅寶石進程在乘客加載時達到100%。降級到RubyGems 1.5.3解決了這個問題。