news 2026/6/19 22:41:18

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/6/7 2:38:34

Git合并时忽略文件的6种技巧

有几种方法可以在 git merge 时忽略特定文件的合并&#xff1a;方法一&#xff1a;使用 .gitattributes 文件&#xff08;推荐&#xff09;在项目根目录创建或编辑 .gitattributes 文件&#xff1a;infostation.js mergeours *.js mergeours # 如果需要忽略所有js文件的合并然…

作者头像 李华
网站建设 2026/6/13 13:19:26

超越能源使用:数据中心可持续运营策略

随着越来越多的数据中心建设以适应AI的日益普及和广泛采用&#xff0c;未能优先考虑更可持续运营的运营商将面临挑战。根据一项报告&#xff0c;截至2024年底&#xff0c;美国有1,240个数据中心建成或获批建设。美国数据中心的快速增长引发了关于数据中心能源和自然资源消耗的日…

作者头像 李华
网站建设 2026/6/9 1:40:36

联想和摩托罗拉推出自有设备端AI助手

联想和摩托罗拉正在推出自有的设备端AI助手联想和摩托罗拉正在推出自有的设备端AI助手Qira将在本季度晚些时候到来。如果世界上的数字助手还不够多的话&#xff0c;联想正在向这个堆积如山的助手队伍中再添加一个。周二晚上&#xff0c;该公司宣布推出Qira&#xff0c;这是一个…

作者头像 李华
网站建设 2026/6/19 2:08:24

探讨 C++ 在工程实践中的独特价值、其对底层能力的深刻影响,以及在复杂系统设计中不可替代的作用,揭示技术发展的新趋势与面对的挑战

在互联网行业的早期阶段&#xff0c;技术红利极为明显。只要掌握一门主流语言&#xff0c;熟悉常见框架&#xff0c;就可以迅速参与项目、完成需求、获得不错的职业回报。但随着行业逐渐成熟&#xff0c;一个现实问题开始浮现&#xff1a;为什么技术工作年限相近的工程师&#…

作者头像 李华
网站建设 2026/6/19 9:19:19

AI Coding后端开发实战,非常详细收藏我这一篇就够了

前言&#xff1a;AI时代&#xff0c;我们该如何与AI Coding协作&#xff1f; 随着AI技术在软件开发领域的快速发展&#xff0c;AI Coding作为一款强大的AI辅助开发工具&#xff0c;正在深刻改变着我们的开发模式。然而&#xff0c;在实际应用过程中&#xff0c;许多开发人员在早…

作者头像 李华