您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

MySQL自动关闭连接导致DBCP报错

2024/2/19 16:35:05发布33次查看
原因是dbcp保持连接的超时时间比mysql连接超时时间长。mysql配置中的wait_timeout值一定要大于等于连接池的idle_timeout值,否则
长时间不操作页面后,再操作时程序就会报错,异常如下:
com.mysql.jdbc.exceptions.jdbc4.communicationsexception:communications link failure
thelast packet successfully received from the server was 8,064,672 millisecondsago. the last packet sent successfully to the server was 8,064,672 millisecondsago.
at sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method)
atsun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:39)
atsun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:27)
at java.lang.reflect.constructor.newinstance(constructor.java:513)
at com.mysql.jdbc.util.handlenewinstance(util.java:409)
at com.mysql.jdbc.sqlerror.createcommunicationsexception(sqlerror.java:1122)
at com.mysql.jdbc.mysqlio.send(mysqlio.java:3317)
at com.mysql.jdbc.mysqlio.sendcommand(mysqlio.java:1941)
at com.mysql.jdbc.mysqlio.sqlquerydirect(mysqlio.java:2114)
at com.mysql.jdbc.connectionimpl.execsql(connectionimpl.java:2696)
atcom.mysql.jdbc.preparedstatement.executeinternal(preparedstatement.java:2105)
at com.mysql.jdbc.preparedstatement.executequery(preparedstatement.java:2264)
at org.apache.commons.dbcp.delegatingpreparedstatement.executequery(delegatingpreparedstatement.java:96)
atorg.apache.commons.dbcp.delegatingpreparedstatement.executequery(delegatingpreparedstatement.java:96)
atorg.apache.commons.dbcp.delegatingpreparedstatement.executequery(delegatingpreparedstatement.java:96)
...
caused by: java.net.socketexception: connection reset by peer: socket writeerror
at java.net.socketoutputstream.socketwrite0(native method)
at java.net.socketoutputstream.socketwrite(socketoutputstream.java:92)
at java.net.socketoutputstream.write(socketoutputstream.java:136)
at java.io.bufferedoutputstream.flushbuffer(bufferedoutputstream.java:65)
at java.io.bufferedoutputstream.flush(bufferedoutputstream.java:123)
at com.mysql.jdbc.mysqlio.send(mysqlio.java:3298)
... 34 common frames omitted
原因是dbcp保持连接的超时时间比mysql连接超时时间长。mysql配置中的wait_timeout值一定要大于等于连接池的idle_timeout值,,否则mysql会在wait_timeout的时间后关闭连接,然而连接池还认为该连接可用,这样就会产生异常。
通过mysql客户端连到服务器,查看目前的配置。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product