1.c3p0连接池连接MySql数据库,当c3p0设置的最大连接数c3p0.max_size超过了MySQL设置的最大连接数max_connections,一旦系统使用的连接数超过了max_connections,就会报以下异常:
2012-9-15 12:00:26 com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run 警告: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1c5d81c -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
......
所以解决这个问题的方法就是修改MySQL的最大连接数,MySQL默认的最大连接数是100。
在mysql安装目录下的my.ini文件中的[mysqld]下加上:
max_connections=1000
2.mysql数据库连接超时(wait_timeout)问题
当系统与mysql数据库建立连接后,如果两次数据库操作的间隔时间超过了 8 小时(默认),数据库会自动断开连接,再次访问就会抛出异常。
一般的解决方法大多是在连接数据库的url后面加上“autoReconnect=true”自动重连,但是这只对 mysql4 以前的版本有效,在mysql5.0以上版本是无效的。
解决方法:
修改mysql数据库的系统变量wait_timeout和interactive_timeout。
MySQL5手册中对两个变量有如下的说明: interactive_timeout