2009-10-25 23 views
1

我正在通過Phusion Passenger(mod_rails)運行Rails應用程序,該應用程序可以平穩運行一段時間,然後突然慢到爬網(每小時一個或兩個請求)並且變得無響應。儘管我不確定內存,但在整個考驗中CPU使用率都很低。Rails應用程序(mod_rails)每隔幾小時掛起

有誰知道我應該從哪裏開始診斷/解決問題?

更新:現在重新啓動應用程序,然後確實解決了問題,但我正在尋找更長期的解決方案。內存使用量逐漸增加(最初約30mb每個實例,一小時後變爲40mb,到崩潰時達到60或70mb)。

回答

1

New Relic可以顯示您的內存使用情況。 Engine Yard建議使用Rack :: Bug,MemoryLogic或Oink等工具。對於類似的東西,您可能會發現有用的article

+0

謝謝:這篇文章真的有幫助。 – igul222

+0

很酷。不用謝! – andHapp

1

如果重新啓動應用程序可以解決問題,查看其資源使用情況將是一個很好的開始。

0

聽起來像你有某種內存泄漏。如果您想對此問題進行包裝,您可以嘗試將PassengerMaxRequests設置爲稍低一點,直到找出所發生的事情。

http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerMaxRequests

這將重新啓動你的情況下,個別,他們已經處理的請求的一組號碼後顯示。您可能需要擺弄它才能找到在鎖定之前自動重新啓動的最佳位置。

其他的提示是: - 依序通過你的插件/寶石,並確保他們是最新 - 檢查重行動,並要求那裏有很多的內存消耗(對NewRelic的,這是偉大的) - 你可能要考慮切換到REE,因爲它有更好的垃圾回收

最後,您可能需要設置一個cron作業,查看當前正在運行的乘客實例,並在它們超過特定內存閾值時將其殺死。乘客將處理重新啓動它們。