2012-04-18 67 views
1

我的應用程序正在交換到磁盤,因爲它使用的是2.2 GB的內存。我無法弄清楚在我的應用程序中是什麼導致它成爲這樣的內存豬。My Rails 3.1.3應用程序佔用太多內存

這是一個RHEL5 VM,具有2 GB的RAM。

Rails是3.1.3版本。

我的網絡服務器在nginx v1.0.10中,使用Phusion Passenger 3.0.11版本。

「ruby」進程似乎完全沒有足夠的內存佔用。

該應用程序是一個相對直接的產品目錄。當內存不足時,服務器每天會崩潰兩次。我也使用memcached v1.4.4。

當最終無法建立更多內存時,Rails緩存導致崩潰。

我不知道採取什麼步驟來確定爲什麼我的應用程序具有如此大的佔用空間。

難道是:

1) Some gems being loaded into memory? 
2) A faulty or insufficient Passenger setup in my nginx.conf file? 
3) Something else? 

我深深感謝所有幫助任何人都可以提供!我不得不在晚上每隔兩小時檢查一次這個東西。不好玩!

UPDATE:

客車配置如下:

server { 
    listen 80; 
    client_max_body_size 4M; 
    server_name www.myapp.net myapp.net *.myapp.net; 
    root /usr/code/mcp5/public; # <--- be sure to point to 'public'! 
    passenger_enabled on; 
    passenger_min_instances    5; 
    rails_env       production; 
    rails_framework_spawner_idle_time 0; 
    rails_app_spawner_idle_time   0; 
} 

我也是在我的日誌記錄工具,這件事迅速旋轉起來超過20紅寶石特效注意到。

回答

1

你的乘客配置是什麼樣的?您可能有太多的線程可用於您的資源。

感謝您的更新。

儘管我們的服務器比您的服務器有更多的資源,但我們仍然使用以下指令。

PassengerMaxPoolSize

嘗試將其設置爲10,開始了和執行負載測試。這至少應該阻止應用程序殺死你的服務器。然後我會花更多的時間來確定瓶頸在哪裏。我們使用Newrelic進行性能監控。希望這有助於

+0

感謝您的快速回復!我發佈了上面的配置。 – AKWF 2012-04-18 02:46:01

+0

我已經更新了我的回覆 – 2012-04-18 03:09:06

+0

我們也使用NewRelic,他們新的服務器監控功能以及您的指針幫助我解決了這個問題。 23掛機架流程從誰知道什麼時候開始。我將添加你提到的參數。再次感謝。 – AKWF 2012-04-18 03:12:08

1

如果您不能使用或NewRelic的沒有錢爲親的計劃,你可以嘗試以下操作以找出與乘客的問題:

sudo /usr/local/bin/passenger-status 

查看哪些和多少進程屬於哪個網站 - 非常有用的,如果服務從一臺機器和

sudo /usr/local/bin/passenger-memory-stats 

幾個網站來查看服務參與 所有進程(阿帕奇+乘客+紅寶石)內存的詳細信息。

也可以像munin一樣設置傳統監控。有幾個howtos監測與慕尼黑的乘客