我们使用Apache和JBOSS来托管我们的应用程序,但是我们发现了一些与线程处理mod_jk有关的问题。Apache与JBOSS使用AJP(mod_jk)给线程数产生尖峰
我们的网站属于低流量网站,在我们网站的高峰活动期间拥有最多200-300位并发用户。随着流量的增长(不是以并发用户为单位,而是以服务器的累积请求为单位),服务器停止提供很长时间的请求,虽然它没有崩溃,但直到20分钟才能提供请求。 JBOSS服务器控制台显示350个线程在两台服务器上都很忙,尽管有足够的空闲内存,比如1-1.5 GB(JBOSS使用2台服务器,64位,为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。其问题正如许多人在下面的答案中正确提到的那样,即连接器问题。此前我们通过配置hibernate和增加响应时间来做临时解决方案。完整的修复是APR。