怀疑是Tomcat 6.0.24版本问题导致

之前使用SSH做了一个项目,这几天开始投入使用,可没有料到,Tomcat服务每天至少死掉一次,客户那边老是要求查出原因。

系统使用人数不是很多,但就不知道为什么老是死掉,分配了2G的内存给Tomcat,有监控了一段时间,内存使用率都很少啊,应该不会是内存的问题啊。

安装的Tomcat版本是6.0.24,网上有报出该版本存在bug,进入Tomcat管理界面,可以看到Http的默认线程是200,但是系统用了一段时间,Current thread count这个值只会不断的增加,而且很快就接近200了。
http-80
Max threads: 200 Current thread count: 13 Current thread busy: 1

找了下资料,说是可以修改server.xml,增加Max threads的值,方法如下:
将Executor标签的注释去掉,修改maxThreads的值

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 
        maxThreads="200" minSpareThreads="30"/>

然后再Connector标签加上executor=”tomcatThreadPool”

<Connector executor="tomcatThreadPool" port="80" protocol="HTTP/1.1" 
        connectionTimeout="20000" 
        redirectPort="8443" />

但是修改完后重启Tomcat,进入后台查看到的居然是下面这样:
http-80
Max threads: -1 Current thread count: -1 Current thread busy: -1

非常奇怪,本以为-1是表示无穷大,现在应该没有问题了吧,可是过了一天,Tomcat照样死掉,狂晕!

今天干脆把Tomcat从6.0.24升级到6.0.33,暂时没有修改Max threads的值,希望不会再出问题了。。。

继续跟踪。。。

以下为2012.02.17更新:
今天继续查了相关资料,发现上面的设置是使用了共享线程池,如果不是想设置共享线程池,而只是单单想增大Max Threads的值,只需要在Connector标签下面增加以下两个属性即可。
maxThreads=”200″ minSpareThreads=”30″

完成内容如下:

<Connector executor="tomcatThreadPool" port="204" protocol="HTTP/1.1" 
       connectionTimeout="20000" 
       redirectPort="8443" URIEncoding="UTF-8"
       maxThreads="200" minSpareThreads="30"
       />

先观察一下昨天升级到6.0.33后的效果吧,看看问题有没有解决,如果没有的话,再设置一下Max Threads看看。

实验结果:
升级到6.0.33后,现象依旧,果断升级到Tomcat7.0.25,问题解决,一个星期了,还没有停过服务。估计是6.0.24~6.0.xx都存在这个bug了。。。建议不要装这些版本的Tomcat,要么6.0.24以下的,要么就直接升级到Tomcat7。

本文固定链接: http://gevin.me/265.html | Gevin's Blog

该日志由 admin 于2012年02月16日发表在 Java 分类下, 通告目前不可用,你可以至底部留下评论。
原创文章转载请注明: 怀疑是Tomcat 6.0.24版本问题导致 | Gevin's Blog
关键字:

怀疑是Tomcat 6.0.24版本问题导致:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter