我修改了mysql的配置到24小时以上的wait_timeout配置,就没有问题,难道druid的检测没生效么??这是mysql的问题,链接自动关闭了。。。。或者你在链接的url上加入自动重连也行的我已经加了重连的。。也没用。。。怎么写?
修改mysql wait_timeout 是愚蠢的做法我也知道,但是这也是没有办法中的办法啊,你贴的这个配置我都配置了的啊,兄台有其他指教么mysql连接默认8小时无活动自动断开,是否是这个原因?是的,感觉就是这个原因,但是我druid连接池是设置好了的,不应该断开才对。
?useUnicode=true&characterEncoding=utf8&autoReconnect=true
就是红色那段
testWhileIdle=true配置了没?设置了的,@xzfx@wenshao
目前设置如下:druid.alias=spring-druid
druid.driver-class=com.mysql.jdbc.Driver
druid.driver-url=jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
druid.user=whdb
druid.password=123456
druid.minEvictableIdleTimeMillis=300000
druid.maxWait=60000
druid.timeBetweenEvictionRunsMillis=60000
druid.maxActive=30
druid.minIdle=5
druid.initialSize=5
druid.testWhileIdle=true
druid.validationQuery=select1fromtbl_user
现在将mysql的wait_timeout加大了就没问题。。
我在想要不要在spring加一个task,7个小时自动执行一个简单的查询语句,保持连接的有效性。。。
昨天我打开了druid的监控,也可以看到druid的监控信息:
*获取连接时检测 false 是否在获得连接后检测其可用性*空闲时检测 true 是否在连接空闲一段时间后检测其可用性*连接放回连接池时检测 false 是否在连接放回连接池后检测其可用性
看这里的监控信息,testwhileidle是生效了的。
spring的配置:
Softwarecausedconnectionabort:socketwriteerror
这个提示是连接上了,但是socket写入有问题。
同楼主一样,运行一段时间报错CommunicationsException:Communicationslinkfailure
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:CommunicationslinkfailureThelastpacketsentsuccessfullytotheserverwas0millisecondsago.Thedriverhasnotreceivedanypacketsfromtheserver.atsun.reflect.GeneratedConstructorAccessor48.newInstance(UnknownSource)~[na:na]atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)~[na:1.7.0_67]atjava.lang.reflect.Constructor.newInstance(Constructor.java:526)~[na:1.7.0_67]atcom.mysql.jdbc.Util.handleNewInstance(Util.java:411)~[mysql-connector-java-5.1.17.jar:na]atcom.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)~[mysql-connector-java-5.1.17.jar:na]atcom.mysql.jdbc.MysqlIO.(MysqlIO.java:344)~[mysql-connector-java-5.1.17.jar:na]atcom.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2333)~[mysql-connector-java-5.1.17.jar:na]atcom.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2370)~[mysql-connector-java-5.1.17.jar:na]atcom.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2154)~[mysql-connector-java-5.1.17.jar:na]atcom.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:792)~[mysql-connector-java-5.1.17.jar:na]atcom.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47)~[mysql-connector-java-5.1.17.jar:na]atsun.reflect.GeneratedConstructorAccessor46.newInstance(UnknownSource)~[na:na]atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)~[na:1.7.0_67]atjava.lang.reflect.Constructor.newInstance(Constructor.java:526)~[na:1.7.0_67]atcom.mysql.jdbc.Util.handleNewInstance(Util.java:411)~[mysql-connector-java-5.1.17.jar:na]atcom.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)~[mysql-connector-java-5.1.17.jar:na]atcom.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)~[mysql-connector-java-5.1.17.jar:na]atcom.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:142)~[druid-0.2.9.jar:0.2.9]atcom.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:211)~[druid-0.2.9.jar:0.2.9]atcom.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:136)~[druid-0.2.9.jar:0.2.9]atcom.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1271)~[druid-0.2.9.jar:0.2.9]atcom.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1325)~[druid-0.2.9.jar:0.2.9]atcom.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1215)~[druid-0.2.9.jar:0.2.9]Causedby:java.net.ConnectException:Connectionrefused:connectatjava.net.TwoStacksPlainSocketImpl.socketConnect(NativeMethod)~[na:1.7.0_67]atjava.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)~[na:1.7.0_67]atjava.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)~[na:1.7.0_67]atjava.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)~[na:1.7.0_67]atjava.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)~[na:1.7.0_67]atjava.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)~[na:1.7.0_67]atjava.net.Socket.connect(Socket.java:579)~[na:1.7.0_67]atjava.net.Socket.connect(Socket.java:528)~[na:1.7.0_67]atjava.net.Socket.(Socket.java:425)~[na:1.7.0_67]atjava.net.Socket.(Socket.java:241)~[na:1.7.0_67]atcom.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)~[mysql-connector-java-5.1.17.jar:na]atcom.mysql.jdbc.MysqlIO.(MysqlIO.java:294)~[mysql-connector-java-5.1.17.jar:na]...17commonframesomitted00:00:31.875[Druid-ConnectionPool-Create]ERRORc.alibaba.druid.pool.DruidDataSource-createconnectionerror