我们使用 Apache 和 JBOSS 来托管我们的应用程序,但我们发现了一些与 mod_jk 的线程处理相关的问题。
我们的网站属于低流量网站,在我们网站的活动高峰期最多有 200-300 个并发用户。随着流量的增长(不是并发用户,而是到达我们服务器的累积请求),服务器停止服务请求很长时间,虽然它没有崩溃,但直到 20 分钟才能处理请求。JBOSS 服务器控制台显示两台服务器上都有 350 个线程忙,尽管有足够的可用内存,例如超过 1-1.5 GB(使用了 2 个 64 位的 JBOSS 服务器,为 JBOSS 分配了 4 GB RAM)
为了检查问题,我们使用了 JBOSS 和 Apache Web 控制台,我们看到线程在 S 状态下显示的时间长达几分钟,尽管我们的页面需要大约 4-5 秒才能提供服务。
我们进行了线程转储,发现线程大多处于 WAITING 状态,这意味着它们正在无限期地等待。这些线程不是我们的应用程序类,而是 AJP 8009 端口。
有人可以帮助我吗,因为其他人也可能遇到这个问题并以某种方式解决了它。如果需要更多信息,请告诉我。
mod_proxy 也比使用 mod_jk 更好,或者如果我切换到 mod__proxy,mod_proxy 还有一些其他问题对我来说可能是致命的?
我使用的版本如下:
Apache 2.0.52
JBOSS: 4.2.2
MOD_JK: 1.2.20
JDK: 1.6
Operating System: RHEL 4
谢谢您的帮助。
伙计们!!!!我们终于找到了上述配置的解决方法。它是 APR 的使用,在这里提到:http: //community.jboss.org/thread/153737。许多人在下面的答案中正确提到了它的问题,即连接器问题。早些时候,我们通过配置休眠和增加响应时间来临时解决问题。完整的修复是 APR。