我们有一个使用Spring和Hibernate用Java 8编写的应用程序。
我们在prod和dev环境中都使用MySQL数据库。数据库每天使用一次,进程从晚上11点开始。有些时候甚至没有人使用prod数据库,因此在8小时的不活动之后,MySQL数据库将放弃连接。当进程开始时,我们得到一个错误:
Exception occured: org.hibernate.exception.GenericJDBCException: Cannot release connection 然后,当某个人在初始故障后手动启动该过程--一切正常。
似乎第一次连接(自动)尝试是以某种方式触发MySQL数据库站起来,而第二次(手动)尝试没有问题,因为MySQL数据库已启动并运行.
我们有三个想法:
spring-database.xml中配置JDBC驱动程序时,它将以某种方式每4小时对数据库进行一次"ping“,以保持数据库的活力,但我们仍然不知道如何正确地执行.哪一个主意(这三个)似乎是最好的?我们个人认为第三个解决方案是最好的..。但是,如何将JDBC驱动程序配置为每4小时左右以某种方式"ping“数据库?或者你们中的某个人会有更好的主意?
事先非常感谢
哪个主意是最好的?
发布于 2017-11-22 11:18:54
您可以在jdbc url中使用autoReconnect参数来修复这个issue.For示例:
MYSQL_URL=jdbc:mysql://10.*.*.0:3306/ABC?autoReconnect=true发布于 2017-11-22 11:13:24
解决方案2是解决这个问题的最少的方法,也可能是最常见的方法。
Log in to your server using SSH.
Edit my.cnf (the MySQL configuration file).
sudo vi /etc/my.cnf定位超时配置并调整其以适合您的服务器。
设置wait_timeout = 86400 =24小时。
https://stackoverflow.com/questions/47432968
复制相似问题