请教Tomcat群集问题

前置apache,后端两台Tomcat,apache采用反向代理方式进行Load balance作业:
当单台Tomcat并发线程数达到20就开始呈现压力,具体表现在打开应用表单变慢,如果到30就很慢,依此上去,到40、50、60、70请求的响应时间越变越慢,但是系统会自动恢复(线程数会回到20以下),当然如果不巧的话系统就无法恢复,直到重启Tomcat

应用程序面一直在改善中。

我们也有测试单台Tomcat,不采用群集方式,应用还是同一个应用,当处理80并发时,系统并无大影响,所以觉得问题应该在群集的参数设定上。

并发线程数量我们查看的是Tomcat status页面上的线程。

以下是我apache的设定:
ProxyRequests Off

ProxyPass / balancer://tomcatcluster/ lbmethod=byrequests stickysession=JSESSIONID nofailover=Off timeout=5 maxattempts=30
ProxyPassReverse / balancer://tomcatcluster/
<Proxy balancer://tomcatcluster>
BalancerMember ajp://10.20.2.91:8109 smax=5 route=jvm1 retry=1 max=1024 flushwait=5
BalancerMember ajp://10.20.2.92:8109 smax=5 route=jvm2 retry=1 max=1024 flushwait=5
</Proxy>


先谢谢,困扰已久
[该贴被ksjunhao于2010-12-27 13:57修改过]

没人应啊,不知道是不是我没有说清楚。
我们愿意花钱合作解决此问题(我们也希望获得一些进阶的JavaEE培训),有意向的可以ksjunhao AT qq.com 可以作进一步沟通。


我目前为解此问题,只有通过增加节点了,从现象来看,似乎单台时没有问题,加上了群集才出现问题。群集后请求会被阻塞,阻塞请求会影响其它请求,tomcat也采用了NIO方式

关键是你的应用不要有httpSession,属于无状态架构,集群效果才好,否则使用memcached之类。

2011年01月04日 12:07 "banq"的内容
关键是你的应用不要有httpSession,属于无状态架构,集群效果才好,否则使用memcached之类 ...

谢谢banq的回应

我们session数据非常少,只有保存用户信息而已。
况且我们的群集只不过是Load balancer而已,没有session复制,不采用Load balancer的单台机器能处理更多的并发数,但是一旦用到了Load balancer后似乎单台Tomcat的并发请求处理能力急速下降

那就是LB的算法问题,一般shiRobbin轮询,你优化一下,再不行就买LB HUB,贵是有贵的道理。

LB算法上,无论什么算法,如果业务采取读写分离架构,要比任何算法优化得多。

最近也进行了和lz一样的部署实施,配置基本相同。目前尚未反应类似的情况。不知lz目前状况如何?怎么解决的?

对了,我们采用的是session粘贴的方式实施的,并没有session的复制。lz的实施是否是session复制造成的?
可能是lz的Tomcat配置有问题。
[该贴被xuejianlong于2011-01-05 23:25修改过]

有没有开ulimit?或者能不能换mod_jk?