xxl-job java.sql.SQLException: interrupt问题排查(二)

在解决完之前出现的xxl-job java.sql.SQLException: interrupt问题后(参见:xxl-job java.sql.SQLException: interrupt问题排查

线上运行的某一天突然又出现了同样的报错

java 复制代码
ConnectionManager [Thread-23069] getWriteConnection db:***,pattern: error, jdbcUrl: jdbc:mysql://***:3306/***?connectTimeout=3000&socketTimeout=180000&autoReconnect=true&zeroDateTimeBehavior=CONVERT_TO_NULL&characterEncoding=utf8 java.sql.SQLException: interrupt 	at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1430) ~[druid-1.1.12.jar!/:1.1.12] 	at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1272) ~[druid-1.1.12.jar!/:1.1.12] 	at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5007) ~[druid-1.1.12.jar!/:1.1.12] 	at com.alibaba.druid.filter.FilterAdapter.dataSource_getConnection(FilterAdapter.java:2745) ~[druid-1.1.12.jar!/:1.1.12]

只不过这次报错是在另一个定时任务,这种肯定还是代码内部触发了线程中断,druid响应了这个中断,分析这个新的定时任务特点:

  • 没有设置超时时间(也就排除了可能是因为任务超时导致的触发中断)
  • 任务采用的路由策略是轮询,阻塞处理策略是覆盖之前调度
  • 任务每隔一分钟调度一次
  • 应用服务器有三台机器

观察报错,发现报错的是固定时间点的任务,这个时间点任务执行较长需要4分钟左右,最终查看日志发现

说明是由于下一次任务覆盖上一次任务,触发了任务的终止,触发了线程中断,代码位于

定位到问题解决方案有两种:

  1. 定时任务,业务代码异步执行(推荐)
  2. 调整定时任务的执行频率
相关推荐
葡萄成熟时 !7 小时前
JAVA 常用API学习笔记
java·笔记·学习
剩下了什么7 小时前
float32 与 float64 精度陷阱:如何在 Go 中避免错误使用
开发语言·后端·golang
Rain的Java大神之路8 小时前
介绍一下分布式事务
java·分布式·后端·spring·spring cloud·架构·springcloud
指尖时光.8 小时前
Three.js 超全入门综合案例
开发语言·javascript·ecmascript
暴力求解8 小时前
Linux网络---传输层协议TCP(二)
linux·服务器·开发语言·网络·tcp/ip
吴声子夜歌8 小时前
Java面试题——基础(一)
java·开发语言
小庞在加油9 小时前
WinDbg实战:QT/跨平台项目死锁与无响应问题排查指南
开发语言·qt·windbg·工具
南城以南溫暖如初1479 小时前
外卖CPS实战指南:从技术选型到运营落地全流程解析
java·spring boot·mysql·架构·vue
Vae_Mars9 小时前
C#中的delegate委托
开发语言·c#
傻啦嘿哟9 小时前
英雄联盟皮肤爬虫:爬取全皮肤价格与特效,做比价工具
java·c++·爬虫