admin管理员组

文章数量:1619183

情况说明

一个定时任务查询数据进行汇总,查询时间大约在20-30秒,应用链接报错。

CommunicationsException: Communications link failure

The last packet successfully received from the server was 10,026 milliseconds ago.

环境

MySQL8.0

mysql-connector-java.8.0.29

druid.1.2.15

本文适用于druid.1.2.12及以上并且通过修改配置无效的情况参考。

尝试解决方案

一、修改数据库配置(没重启数据库,测试无效)

show global variables like '%TIMEOUT%'
set global WAIT_TIMEOUT=1814400; -- 28800 
set global connect_timeout=100; -- 10 

二、配置数据源连接信息(测试无效)

 

问题解决

在jdbc的URL增加

&connectTimeout=60000&socketTimeout=60000

jdbc:mysql://127.0.0.1:3306/common?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai&connectTimeout=60000&socketTimeout=60000

Releases · alibaba/druid · GitHub阿里云计算平台DataWorks(https://help.aliyun/document_detail/137663.html) 团队出品,为监控而生的数据库连接池 - Releases · alibaba/druidhttps://github/alibaba/druid/releases

Druid 1.2.12版本发布,连接池默认指定socketTimeout,增强SQL Parserhttps://github/alibaba/druid/releases/tag/1.2.12

这个版本连接池默认增加配置connectTimeout和socketTimeout,增强了SQL Parser

  1. 连接池DruidDataSource支持新的配置connectTimeout和socketTimeout,分别都是10秒。这个默认值会减少因为网络丢包时导致的连接池无法创建链接。

本文标签: 报错mysqlSpringBootCommunicationsExceptionfailure