最近折腾了jpa后,接下来就会发现一个大的问题,就是mysql在连接8个小时后,会自动的释放连接。这个时候持久层用的连接池就会报错了,头疼的要死,后来找了一堆资料,看了下,只有一个办法,设置数据库连接的闲置时间,然后在连接池这一层做反闲置设置,意思就是在连接闲置以前先释放掉这个连接。就不会出现问题了。
我用的连接池是c3p0
第一步是修改数据库的闲置时间:
我这里用的是mysql
那么直接修改或者增加 MySQL 的 wait_timeout 属性的值。
修改/etc/mysql/my.cnf文件,在 [mysqld] 节中设置:
# Set a connection to wait 8 hours in idle status.
wait_timeout = 86400
第二步设置c3p0
基本上就是这几条
以上设置完成以后,就应该没啥问题了,我现在还在测试中,明天就有结果了,到时候在更新blog
其他的连接池也应该有类似的问题,可以参照一下 :)
第二天访问的时候果然没有出现连接池的错误了,呵呵,不错。