news 2026/5/20 10:12:06

com.mysql.cj.jdbc.exceptions.CommunicationsException Communications link failure 问题解决

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
com.mysql.cj.jdbc.exceptions.CommunicationsException Communications link failure 问题解决

前言:

一般这个报错大多是网络原因导致的,确保你不是网络问题再往下看

问题

在一个方法上(该方法非常复杂执行时间长)加了 @Transactional(rollbackFor = Exception.class)后出现了如下图所示的错误

解决:

经过排查并非网络问题。复现时,在数据库执行show processlist;发现出现了很多存在时间非常长的锁(非死锁),那么大概率是因为数据库连接池的连接数不够导致的数据库连接失败中断。在长事务中每次进行数据库操作都要占用连接数,并且因为事务没有提交的原因,一直没有释放连接。细化事务的范围即可(不保证整个过程一致)
比如你的主方法在A类,调用了B类的方法,就别在A类方法上加事务注解,而是在B类被调用的上方法加。如果A类调用B类方法是多次调用的话(比如循环),那么他会在B类开启你循环次数个事务,每个事务独立。例如你调用了100次,前99次全成功,最后一次失败,他是不会回滚前99次的操作的,而是会回滚你第100次的操作。

扩展解释:

@Override public void B() { // 操作数据库的方法 } @Transactional(rollbackFor = Exception.class) public void A(List<String> strs) { for (String s: strs) { B(); } } @Override @Transactional(rollbackFor = Exception.class) public void B() { // 操作数据库的方法 } public void A(List<String> strs) { for (String s: strs) { B(); } }

第一段代码中只会启动一个事务,在循环的数据库操作还未全部完成之前(事务未提交)会一直占用连接池,第二段代码中,会启动strs集合大小个事务,遍历完一个元素便提交一次事务。如果两个方法都加注解,子方法启动事务的时候会判断上一层有没有事务,如果有那么会加入到上一层事务管理,而不是自己启一个事务。这就涉及到事务的传播特性了

2024.1.04补充

在调试一个复杂的导出时,又出现了Communications link failure的错误,第一反应就是sql执行时间太长超过了druid设置的maxwait(获取连接等待超时时间)。
分析sql,执行explain 你的sql。id为执行优先级,数值一样则从上到下执行。其他参数我就不解释了,网上都有(搜索explain各个参数的意义),主要看table(表别名)、type(扫描类型,不要看到all就觉得很影响性能,其实表小的话不走索引反而更快)、row(预估扫描条数,如果数量很大,那你的sql就需要优化了)、extra(一般是看排序请客,尽量让Using index出现多点)。
如果条件允许,我建议把所有连接条件中的字段(一般是id为主)和order by 、 group by后面的字段都加索引

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 11:58:22

信使(msner)(信息学奥赛一本通- P1376)四种做法

【题目描述】战争时期&#xff0c;前线有n个哨所&#xff0c;每个哨所可能会与其他若干个哨所之间有通信联系。信使负责在哨所之间传递信息&#xff0c;当然&#xff0c;这是要花费一定时间的&#xff08;以天为单位&#xff09;。指挥部设在第一个哨所。当指挥部下达一个命令后…

作者头像 李华
网站建设 2026/5/13 8:33:51

Nomad ZBrush:GSC 模型制作教程

Nomad & ZBrush&#xff1a;GSC 模型制作教程课程基本信息- 发布时间&#xff1a;2026年1月 - 类别&#xff1a;设计类 - 格式与规格&#xff1a;MP4 格式 1920x1080 分辨率 - 语言&#xff1a;英语 - 时长&#xff1a;15小时 - 大小&#xff1a;22GB - 副标题&#xff1…

作者头像 李华
网站建设 2026/5/11 9:25:25

TOTOLINK EX200存在未修复固件漏洞可被完全远程接管

CERT协调中心(CERT/CC)披露了影响TOTOLINK EX200无线信号扩展器的未修复安全漏洞详情&#xff0c;该漏洞可能允许经过身份验证的远程攻击者完全控制设备。该漏洞编号为CVE-2025-65606(CVSS评分&#xff1a;暂无)&#xff0c;被描述为固件上传错误处理逻辑中的缺陷&#xff0c;可…

作者头像 李华
网站建设 2026/5/20 9:58:02

Ring推出Fire Watch功能,利用家庭摄像头追踪野火威胁

洛杉矶大火一年后&#xff0c;亚马逊Ring安防服务宣布推出名为Fire Watch的新功能&#xff0c;旨在减轻未来野火风险。Fire Watch与CES 2026同期发布&#xff0c;是Ring应用程序Neighbors社区安全更新板块的新功能&#xff0c;计划今年春季在全国范围内推出。Fire Watch依托Wat…

作者头像 李华
网站建设 2026/5/18 12:26:19

机器海龟游向环保使命:仿生技术守护珊瑚礁

在自然环境中与海龟一起游泳是一种令人敬畏的体验。这些温和的生物以其深思熟虑且小心的鳍状肢划水方式在水下世界中航行&#xff0c;观看起来完全令人着迷。这是一种独特的运动方式——当我在CES 2026展会现场看到Beatbot公司的RoboTurtle在水箱中游泳时&#xff0c;我立刻意识…

作者头像 李华
网站建设 2026/5/19 17:30:05

零基础 | LangChain 构建大模型应用的开发框架

文章目录&#x1f4c4; 基本信息&#x1f680; LangChain框架概述核心定位生态系统核心价值使用建议选择考量&#x1f9e9; LangChain核心抽象详解核心抽象组件ChatModel详解PromptTemplate详解OutputParser详解核心抽象的价值&#x1f4dd; 使用示例运行结果&#x1f3af; 功能…

作者头像 李华