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值改小一些。