2010-02-26 71 views
0

這可能也屬於serverfault。這是一種服務器配置和代碼(我認爲)之間的組合的Tomcat上的Jruby Rails應用程序CPU使用率峯值

這裏是我的設置:

Rails 2.3.5 app running on jruby 1.3.1 
Service Oriented backend over JMS with activeMQ 5.3 and mule 2.2.1 
Tomcat 5.5 with opts: "-Xmx1536m -Xms256m -XX:MaxPermSize=256m -XX:+CMSClassUnloadingEnabled" 
Java jdk 1.5.0_19 
Debian Etch 4.0 

運行top,每次我點擊我的網站的鏈接,我看到我的java進程的CPU使用率峯值。如果它是一個小頁面,有時只有10%的使用率,但有時在一個更復雜的頁面上,我的CPU高達44%(從未超過,不知道爲什麼)。在這種情況下,請求可能會花費幾分鐘,而我的服務器的load average穩步攀升至8或更高。這只是點擊一個鏈接,從一些服務加載一些請求,沒有太複雜。 java進程內存大部分時間徘徊在20%左右。

如果我離開它一點,平均負載回落到沒有。點擊幾個鏈接,爬回去。

我正在爲rails前端運行一個小型amazon實例,併爲所有服務運行一個大型實例。

現在,這顯然是不可接受的。一個用戶可以將負載平均值增加到8,並且有兩個人使用它,它會保持我們使用站點期間的平均負載。我想知道我能做什麼來檢查發生了什麼?我完全喪失瞭如何進行調試。 (它不會在本地發生,當我通過jruby運行rails應用程序時,不在tomcat容器中)

有人能告訴我如何檢查我的jruby應用程序,以瞭解它可能如何使用up如此巨大的資源?

請注意,我之前注意到了這一點,似乎是隨機的,但是現在,從Rails 2.2.2升級到2.3.5後,我看到了這一切,並且使網站完全無法使用。

任何提示在哪裏看,都非常感激。我甚至不知道從哪裏開始。

回答

0

確保Tomcat和其他東西之間沒有意外的通信。如果出現以下情況,我將首先檢查:

  • ActiveMQ代理不與您的網絡中的其他代理進行通信。默認情況下,AMQ代理以OpenWire自動發現模式啓動。
  • JGroups/Multicasts通常不會與網絡中的某些內容進行通信。

這個不必要的負載可能來自處理來自另一個應用程序的消息。

+0

感謝您的提示。我其實是前面的紅寶石,所以我仍然在java/activemq上工作,但是當我有機會的時候我會看看 – brad 2010-03-01 14:24:00