Jms Tomcat上的Jruby Rails应用程序CPU使用率峰值

Jms Tomcat上的Jruby Rails应用程序CPU使用率峰值,jms,activemq,tomcat5.5,jrubyonrails,mule,Jms,Activemq,Tomcat5.5,Jrubyonrails,Mule,这也可能属于serverfault。我认为这是服务器配置和代码之间的一种组合 以下是我的设置: 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" Ja

这也可能属于serverfault。我认为这是服务器配置和代码之间的一种组合

以下是我的设置:

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%,从来没有超过,不知道为什么。在这种情况下,当服务器的平均负载稳步上升到8或更高时,一个请求可能需要几分钟以上的时间。这只是单击一个链接,从一些服务加载一些请求,没有什么太复杂的。java进程内存大部分时间都在20%左右

如果我将其保留一段时间,平均负载将恢复为零。点击更多链接,向上爬

我正在为rails前端运行一个小的amazon实例,并为所有服务运行一个大的实例

这显然是不可接受的。一个用户可以将平均负载提高到8,如果有两个人使用它,它会在我们使用站点的过程中保持平均负载。我想知道我能做些什么来检查发生了什么?我完全不知道如何调试这个。当我通过jruby运行rails应用程序时,它不会在本地发生,而不是在tomcat容器中

有人能告诉我如何检查我的jruby应用程序以了解它如何可能会占用如此巨大的资源吗

注意,我以前注意到过这一点,似乎是随机的,但现在,在从Rails 2.2.2升级到2.3.5之后,我一直看到它,它使站点完全无法使用


非常感谢您提供有关在何处查找的任何提示。我甚至不知道从哪里开始。

确保Tomcat和其他东西之间没有意外的通信。我会首先检查以下情况:

ActiveMQ代理不与网络中的其他代理通信。默认情况下,AMQ代理以OpenWire自动发现模式启动。 JGroups/Multicast通常不与网络中的内容通信。
处理来自另一个应用程序的消息可能会导致这种不必要的负载。

谢谢您的提示。实际上,我是前面的ruby专家,所以我仍然在研究java/activemq,但有机会的话我会看一看