首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL数据库8小时后断开连接。如何预防?

MySQL数据库8小时后断开连接。如何预防?
EN

Stack Overflow用户
提问于 2017-11-22 10:58:52
回答 2查看 2.5K关注 0票数 1

我们有一个使用Spring和Hibernate用Java 8编写的应用程序。

我们在prod和dev环境中都使用MySQL数据库。数据库每天使用一次,进程从晚上11点开始。有些时候甚至没有人使用prod数据库,因此在8小时的不活动之后,MySQL数据库将放弃连接。当进程开始时,我们得到一个错误:

代码语言:javascript
复制
Exception occured: org.hibernate.exception.GenericJDBCException: Cannot release connection 

然后,当某个人在初始故障后手动启动该过程--一切正常。

似乎第一次连接(自动)尝试是以某种方式触发MySQL数据库站起来,而第二次(手动)尝试没有问题,因为MySQL数据库已启动并运行.

我们有三个想法:

  1. 在我们的应用程序代码中,使用一个触发器,它将试图在进程开始前10到15分钟连接到数据库(但是它仍然抛出这个异常,这不是很好)。
  2. 将MySQL上的8小时空闲计时器设置为24小时或更长时间。
  3. spring-database.xml中配置JDBC驱动程序时,它将以某种方式每4小时对数据库进行一次"ping“,以保持数据库的活力,但我们仍然不知道如何正确地执行.

哪一个主意(这三个)似乎是最好的?我们个人认为第三个解决方案是最好的..。但是,如何将JDBC驱动程序配置为每4小时左右以某种方式"ping“数据库?或者你们中的某个人会有更好的主意?

事先非常感谢

哪个主意是最好的?

EN

回答 2

Stack Overflow用户

发布于 2017-11-22 11:18:54

您可以在jdbc url中使用autoReconnect参数来修复这个issue.For示例:

代码语言:javascript
复制
MYSQL_URL=jdbc:mysql://10.*.*.0:3306/ABC?autoReconnect=true
票数 2
EN

Stack Overflow用户

发布于 2017-11-22 11:13:24

解决方案2是解决这个问题的最少的方法,也可能是最常见的方法。

代码语言:javascript
复制
Log in to your server using SSH.

Edit my.cnf (the MySQL configuration file).

sudo vi /etc/my.cnf

定位超时配置并调整其以适合您的服务器。

设置wait_timeout = 86400 =24小时。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47432968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档