Mysql8小时断线,请问如何解决?Druid

ivan1114 发布于 2014/10/18 16:31
阅读 5K+
收藏 0

@wenshao 你好,想跟你请教个问题:

在实际生产环境中,发现有很多的

java.sql.SQLException: Could not retrieve transation read-only status server Query: insert into的错误日志,

具体是在Mysql 8小时后,就会出现此错误(主要是insert / update / delete事务会出现),请问如何这个错误?

谢谢。

生产环境:

Tomcat 7,MySQL5.6.21,Druid1.0.9


加载中
0
独孤夜魂
独孤夜魂
这个问题是可以在my.ini里面配置的,但是由于现在不再使用mysql了,所以具体怎么配置的,我给忘了。
i
ivan1114
my.cnf,我修改了wait_timeout = 86400和interactive_timeout = 86400,但24小时后,还是会出现此错误,不能治本。
0
南湖船老大
南湖船老大

配置validationQueryvalidationInterval

如果无效的话,那就是druid的bug。不过这个连接池bug好多的样子。经常有人提到这个参数设置无效的,也不知道最新的版本是否还存在此bug

i
ivan1114
回复 @南湖船老大 : 好,我也测试tomat自带的连接池下。
南湖船老大
南湖船老大
回复 @ivan1114 : tomcat jdbc pool. druid好像一直有这个bug
i
ivan1114
已经配置了ds.setValidationQuery("select 1 from dual")和 ds.setValidationQueryTimeout(1000),但是还是出现此错误。 你一般用的是哪个连接池?
0
小99
小99
我已经换用dbcp,没出现这问题,
i
ivan1114
好,我去试换dbcp
0
wenshao
wenshao
配置testWhileIdle=true就好了
0
b
bodala

tomcat不是自带连接池的吗?tomcat7的连接池很好的啊,你怎么不用呢?直接那么简单的一配置,根本没有8小时问题。

0
m
m4wayne

引用来自“wenshao”的评论

配置testWhileIdle=true就好了

温少,

     因为测试环境tomcat和mysql不在同一台服务器上,有时会出现网络通迅丢包或者短时间断网的问题。对此做了如下配置:

<property name="validationQuery" value="SELECT 1" />
<property name="testOnBorrow" value="true" />
<property name="testOnReturn" value="true" />
<property name="testWhileIdle" value="true" />

     但是依然会出现链接失效的错误:

……
Couldn't rollback jdbc connection. No operations allowed after connection closed.
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
……
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 32,542 milliseconds ago.  The last packet sent successfully to the server was 18,903 milliseconds ago.
……
Caused by: java.net.SocketTimeoutException: Read timed out

    而且错误会一直持续(除非重启tomcat),好像testOnBorrow, testWhileIdle, testWhileIdle并没有起效。

hibernate报出的异常:

JDBCExceptionReporter - SQL Error:xxx, SQLState: 08003

或者

JDBCExceptionReporter - SQL Error:xxx, SQLState: 08S01


返回顶部
顶部