0

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

这是我的设置:

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 前端运行一个小型亚马逊实例,并为所有服务运行一个大型实例。

现在,这显然是不可接受的。单个用户可以将平均负载峰值提高到 8,并且在两个人使用它的情况下,它会在我们使用该网站的持续时间内保持该平均负载。我想知道我能做些什么来检查发生了什么?我完全不知道如何调试它。(当我通过 jruby 运行 rails 应用程序时,它不会在本地发生,而不是在 tomcat 容器内)

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

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

非常感谢任何有关在哪里查看的提示。我什至不知道从哪里开始。

4

1 回答 1

0

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

  • ActiveMQ 代理不与您网络中的其他代理进行通信。默认情况下,AMQ 代理以 OpenWire 自动发现模式启动。
  • JGroups/Multicasts 通常不与网络中的某些东西通信。

这种不必要的负载可能是由于处理来自另一个应用程序的消息造成的。

于 2010-02-27T11:30:25.797 回答