mysql数据库在8小时内无请求会自动断开连接,从而导致数据库超时。

mysql的这个值wait_timeout默认就是8小时,可以改成24天左右,不能比这个更大了。修改这个值来解决问题不是很优雅。

为项目加上数据库连接池来解决问题会比较好一些。

使用C3P0做连接池就能解决这个问题,挺优雅的。

代码我就不粘贴出来了,搜索C3P0网上一大堆代码。

 

说这个问题是因为半个月前有个小活动。

功能是需要手机扫码提交数据,很简单的一个小项目,因为功能单一就没有使用任何框架,直接写了个servlet。开发部署完毕之后怎么测都没问题。

休息两天之后,一大早都没法使用。查看tomcat的日志,发现是数据库超时(因为周末没有人使用,所以导致mysql自动断开了)。

当时重启了一下服务器马上就恢复了(当我得知出问题的时候,还剩十分钟就有500个同事要使用了,要是出了问题就太丢脸了。我坐在大巴上,手机ssh服务器直接重启tomcat)。

以后此类项目,再小也要使用连接池!

发表评论