当前位置:   article > 正文

【JEECGBOOT 3】连接池druid报错The last packet successfully received from the server was XX milliseconds ago

the last packet successfully received from the server was 10,012 millisecond

一、场景

二、问题

三、原因

四、解决方案

五、实战

▶  mysql 连接超时时间

▶  mysql 数据库设置

>  先查询 mysql 超时时间 :

>  方式一:docker-compose.yaml 安装数据库时,使用 command (推荐)

>  方式二:修改 my.cnf(/etc/my.cnf 文件所在位置)

▶  java 中 mysql 连接设置

六、效果


一、场景

  • IDEA 2021

  • JEECG BOOT 3.6

  • MYSQL 5.7

  • Spring boot 2.7.10

二、问题

启动报错

  1. The last packet successfully received from the server was 11,012 milliseconds ago. The last packet sent successfully to the server was 11,012 milliseconds ago.

三、原因

        MySQL连接已经超时了,即长时间没有收到新的查询请求。连接处于空闲状态而被MySQL服务器关闭。

 

四、解决方案

你可以尝试使用以下方法来解决这个问题:

  • 检查数据库服务器和应用服务器之间的网络连接是否正常,特别是在高延迟或不稳定的网络环境下。

  • 增加数据库连接的超时时间,这可以通过在JDBC URL中添加"autoReconnect=true&autoReconnectForPools=true&connectTimeout=30000&socketTimeout=60000"参数实现(具体数值可以根据实际情况调整)。

  • 使用 数据库连接池来管理连接,可以更好地控制连接的超时时间和重连逻辑。

  • 检查数据库是否已满,如果数据库已经使用了大量的系统资源,那么此时数据库的性能可能很低,以至于无法响应新的查询请求。

五、实战

▶  mysql 连接超时时间

        分 mysql 数据库设置 + java中mysql连接设置

▶  mysql 数据库设置

>  先查询 mysql 超时时间 :
show variables like '%timeout%';

 

>  方式一:docker-compose.yaml 安装数据库时,使用 command (推荐)
  • 重新构建数据库即可:执行 docker-compose up -d --build
  1. mysql:
  2. image: mysql:5.7.28
  3. container_name: mysql
  4. ports:
  5. - 3306:3306
  6. restart: always
  7. environment:
  8. TZ: Asia/Shanghai
  9. MYSQL_ROOT_PASSWORD: jeecg123456
  10. command:
  11. --connect_timeout=60
  12. --max_connections=16000
  13. --max_user_connections=2000
  14. --interactive_timeout=1200000
  15. --wait_timeout=1200000
  16. --character-set-server=utf8mb4
  17. --collation-server=utf8mb4_general_ci
  18. --default-authentication-plugin=mysql_native_password
  19. --lower_case_table_names=1
  20. volumes:
  21. - ./mysql/data:/var/lib/mysql
  22. - ./mysql/conf/my.cnf:/etc/mysql/my.cnf
  23. deploy:
  24. resources:
  25. limits:
  26. memory: 1G
  27. reservations:
  28. memory: 500M
>  方式二:修改 my.cnf/etc/my.cnf 文件所在位置)
  • mysql 5 以上的版本修改 my.cnf 找到[mysqld]后面加上如下两行代码
  1. wait_timeout=1200000
  2. interactive_timeout=1200000

  • 重启mysql服务在次执行show variables like ‘%timeout%’;命令查看wait_timeout连接等待时间

▶  java 中 mysql 连接设置

>  连接mysql url添加参数 

&keepAlive=true&autoReconnect=true&autoReconnectForPools=true&connectTimeout=30000&socketTimeout=60000

 

六、效果

  • 由之前11秒没有触发连接查询,到现在延长至687秒(约11.2分钟)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/1014674
推荐阅读
相关标签
  

闽ICP备14008679号