Java MySQL数据库在8小时后断开连接。如何预防?
我们有一个使用Spring和Hibernate用Java8编写的应用程序 我们在prod和dev环境中都使用MySQL数据库。数据库每天使用一次,进程从晚上11点开始。有时甚至没有人使用prod数据库,所以在8小时的不活动之后,MySQL数据库正在断开连接。当进程启动时,我们得到一个错误:Java MySQL数据库在8小时后断开连接。如何预防?,java,mysql,spring,hibernate,jdbc,Java,Mysql,Spring,Hibernate,Jdbc,我们有一个使用Spring和Hibernate用Java8编写的应用程序 我们在prod和dev环境中都使用MySQL数据库。数据库每天使用一次,进程从晚上11点开始。有时甚至没有人使用prod数据库,所以在8小时的不活动之后,MySQL数据库正在断开连接。当进程启动时,我们得到一个错误: Exception occured: org.hibernate.exception.GenericJDBCException: Cannot release connection 然后,当有人在初始失败
Exception occured: org.hibernate.exception.GenericJDBCException: Cannot release connection
然后,当有人在初始失败后手动启动流程时,一切都正常
第一次连接(自动)尝试似乎在某种程度上触发了MySQL数据库的启动,第二次(手动)尝试没有问题,因为MySQL数据库已启动并运行
我们有三个想法:
spring database.xml
中配置JDBC驱动程序,使其每4小时“ping”一次数据库以保持其活动状态,但我们仍然不知道如何正确地执行此操作哪个主意最好 解决方案2是解决此问题的最简单的方法,可能也是最常用的方法
Log in to your server using SSH.
Edit my.cnf (the MySQL configuration file).
sudo vi /etc/my.cnf
找到超时配置并调整它以适合您的服务器
设置
wait\u timeout=86400
=24小时。您可以在jdbc url中使用autoReconnect参数来解决此问题。例如:
MYSQL_URL=jdbc:mysql://10.*.*.0:3306/ABC?autoReconnect=true
您可能需要配置连接池。检查数据源设置错误是什么?这是mysql连接超时类型吗?请参阅(这解释了Spring引导,但基本上您必须这样做)。可能重复