本身统计器的并发及访问量比较高,原来以为是程序有问题,但发现该关闭的连接已有关闭,也重新配置TOMCAT还是解决不了问题,最后修改了linux下mysql数据库配置文件的wait_timeout才解决。
linux tomcat logs报错
查看catalina.out日志出现错误
Caused by: java.util.NoSuchElementException: Timeout waiting for idle object
at org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.borrowObject(Gener
icObjectPool.java:1134)
at org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDa
taSource.java:96)
... 20 more
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection, pool er
ror Timeout waiting for idle object
本地myeclisp调试报错
最近在用一个MySQL的Java连接池的过程中,连接一晚上不释放,第二天就会造成超时的错误,查了一下原因,原来是因为MySQL默认的空闲等待时间 是8个小时,一旦空闲超过8个小时,就会抛出异常。异常文本如下:
com.mysql.jdbc.CommunicationsException
MESSAGE: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: Software caused connection abort: socket write error
解决方式:编辑/etc/my.cnf(windows下为my.ini),将超时时间设置为10年,在[mysqld]后面加入:
wait_timeout=315360000
然后重启MySQL
# service mysql restart
搞定。然后重启超时的java连接池程序吧