刘政道 - 应用程序框架

《31天学会CRM项目开发(C#编程入门及项目实战)》作者,IT经理,程序员
  博客园  :: 新随笔  :: 联系 :: 管理

Tomcat崩溃,无法访问

Posted on 2010-11-19 14:23  刘政道  阅读(1307)  评论(0编辑  收藏  举报

Tomcat 在Linux上,使用Hibernate,MySql。网站运行正常,可是过一天或两天,网站就连接不上,有的时候网站运行几个星期都没有事,访问量并不 大啊。很郁闷,不知道是那个地方出了问题。

Tomcat设置最大连接数 1000,MySql设置最大连接数500,CATALINA_OPTS配置512M 1024M。

这些应该都没有问题,用Top查看cpu情况,也没有异常。

通过http://loclahost/manager/status 发现tomcat的当前连接数并没有超过最大连接数,但是发现几个连接一直处于连接状态,时间比较长。在网站上进行访问时,发现只要不使用数据库,单纯访 问个页面没有问题,难道是数据连接有问题?

这些连接的进程应该是等待的进程 吧。那等待什么呢?我索性模拟 200个并发用户访问网站试试。发现问题肯定是出在数据库读取数据上,由于数据库处理请求有一定的数量控制,请求太多的话肯定要是要排队的。要是能及时处 理掉这些请求的话,那应该就能够解决问题。

想来想去,是不是c3p0设置有问题,检查,我把hibernate.c3p0.timeout设置成了1200,改成60试试,果然,问题解决 了。

最近有发现 问题,原来主要的问题可能是MySql,hibernate中配置mysql连接池可能是100,由于mysql自动释放关闭连接池的时间是8个小时,如 果hibernate中mysql连接池设置的数值多大,将会有很多连接池是sleep状态,由于开的进程过多,将严重影响性能。所以可以将my.cnf 中的wait_timeout=28800值改小一些。