当前位置: 首页 > news >正文

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后面的字段都加索引

http://www.jsqmd.com/news/211920/

相关文章:

  • 【NLP】Hugging Face使用指南
  • atl110.dll文件丢失找不到 打不开问题 免费下载方法分享
  • Git合并时忽略文件的6种技巧
  • 在 Ubuntu 下载 Typora
  • RK3588+kylin V10安装docker
  • python---正则表达式
  • ATL80.dll文件丢失找不到 打不开问题 免费下载方法分享
  • 最新爆火6款免费AI论文神器!PaperTan一站式搞定选题降重
  • Linux 命令行实战训练营(
  • 超强在线图片处理器:支持各种格式转换GIF/AVIF/HEIF
  • VisionPro二开之九点标定
  • Design Fluid Viscous Dampers in SAP2000 and Peform3D
  • 2026新测!这几款款亲测有效的降ai率工具推荐,含手把手教你论文降ai,查重率从红变绿只需几分钟!
  • VisionPro之九点标定
  • 全网最全ai降ai方法:亲测能有效降低ai痕迹,论文降aigc从此不求人,导师看了都说好!
  • 程序媛失业第七天
  • 基于Python+Django的社区服务管理系统设计与实现
  • CES 2026最酷笔记本电脑:可拆卸设计成为新趋势
  • 终极降AI指南!这款能让你相见恨晚的论文降aigc神器,实测降ai效果立竿见影
  • 【AI】各类型开源模型排行
  • 论文jiangAI干货!4款aigc免费降重工具,亲测降低ai率的同时保留原意,让你的文章更有“人味”
  • 吐血推荐9个AI论文网站,专科生毕业论文轻松搞定!
  • 还在为AI率爆表发愁吗?这几款降ai率工具推荐,实测免费降低ai率只需三步,建议反复观看!
  • 30岁大厂java程序媛被裁第2个月零10天
  • VisionPro之Blob模块
  • 【记录】LLM|魔搭社区加载本地模型Qwen-Image-Layered(附可运行的代码)
  • CentOS系统安装Python3.12.10
  • 0-073-0030-0可编程控制器
  • 亲测好用自考必看TOP10AI论文工具
  • AI框架之Spring AI与Spring Cloud Alibaba AI使用讲解