The last packet sent successfully to the server was XXX milliseconds ago解决方案(Springboot+Mysql5.7)
作者:mmseoamin日期:2023-12-18

【原因】

      Mysql有连接自动过期机制,如果不配置,默认8小时过期,但springboot中使用的线程池自认为连接依然可用,但实际连接已失效。

【解决方案】    

1、修改MySQL的配置文件my.cnf,参考如下配置:

       bind-address=0.0.0.0

       wait_timeout=3600【注:单位(秒)】

       interactive_timeout=3600【注:单位(秒)】

       connect_timeout=300【注:单位(秒)】   

        注释如下行:

         #skip-networking

2、让JDK使用IPv4而不是IPv6

export _JAVA_OPTIONS="-Djava.net,preferIPv4Stack-true"    

3、修改springboot连接池相关的配置文件

(1)在jdbc连接字符串后追加如下:        

        &autoReconnect=true&failOverReadOnly=false&maxReconnects=20

(2)确定连接池配置(根据自身连接池进行选择)
        spring.datasource.initial-size=5    
        spring.datasource.m