SpringBoot连接MySQL报错CommunicationsException: Communications link failure

文章描述了一个遇到的问题,即定时任务在执行查询时遇到CommunicationsException,提示通信链接失败。尝试通过调整数据库配置和Druid数据源设置解决,但未成功。最终,通过在jdbcURL中增加connectTimeout和socketTimeout参数来延长超时时间,从而解决了连接超时的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

情况说明

一个定时任务查询数据进行汇总,查询时间大约在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.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池 - Releases · alibaba/druidhttps://github.com/alibaba/druid/releases

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

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

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟叮咚糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值