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

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 然后,当有人在初始失败

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

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

Exception occured: org.hibernate.exception.GenericJDBCException: Cannot release connection 
然后,当有人在初始失败后手动启动流程时,一切都正常

第一次连接(自动)尝试似乎在某种程度上触发了MySQL数据库的启动,第二次(手动)尝试没有问题,因为MySQL数据库已启动并运行

我们有三个想法:

  • 在我们应用程序的代码中,使用一个触发器,该触发器将在进程开始前10-15分钟左右尝试连接到数据库(但它仍然会引发此异常,这不好)
  • 将MySQL上的8小时空闲计时器设置为24小时或更长时间
  • spring database.xml
    中配置JDBC驱动程序,使其每4小时“ping”一次数据库以保持其活动状态,但我们仍然不知道如何正确地执行此操作
  • (这三个想法中)哪一个似乎是最好的?我们个人认为第三种解决方案是最好的。。。但是如何将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引导,但基本上您必须这样做)。可能重复