一尘不染

为什么Hibernate / JDBC / MySQL在一天左右的时间内会断开连接?

mysql

我有几个服务器进程,它们有时会响应来自客户端的消息并执行只读事务。

在服务器运行大约几天后,它们停止正常工作,当我检查发现有大量有关关闭连接的消息时。

当我检查出它时,发现默认情况下,hibernate模式在某种开发模式下起作用,在这种模式下,几个小时后连接被断开,我开始使用c3po进行连接池。

但是,即使使用c3po,在启动服务器后约24小时仍会出现此问题。

有没有人遇到过这个问题,并且知道如何解决?我对配置hibernate的复杂性还不够熟悉。


阅读 342

收藏
2020-05-17

共1个答案

一尘不染

在闲置8个小时后,MySQL JDBC驱动程序超时并断开连接。

您可以autoReconnect=true在JDBC
URL中进行设置,如果断开连接后尝试进行查询,这将导致驱动程序重新连接。但这有副作用。例如会话状态和事务无法通过新连接维护。

如果使用autoReconnect,则将重新建立JDBC连接,但它不会自动重新执行获得异常的查询。因此,您确实需要捕获SQLException应用程序并重试查询。

阅读http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-
properties.html了解更多详细信息。

2020-05-17