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

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

近期生产环境固定凌晨报错,提示

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]

排查,发现这个点有在执行定时任务,查看代码逻辑,比较简单,查询db,然后循环插入db,也没有其他逻辑,一般报这个错有一下几个原因:

  1. 线程中断:在获取连接的过程中,应用程序的线程被中断。例如,通过调用Thread.interrupt()方法中断了正在获取连接的线程

  2. db连接超时设置过小:如果连接池的连接超时时间设置得太小,那么当应用程序的线程获取连接时,如果等待时间超过了设置的超时时间,也会抛出这个异常

但是代码中并没有主动调Thread.interrupt()的地方,把链接时间调大后问题还是没有解决。

但是看到观察到这个定时任务执行时间很长,需要几分钟,查看xxl-job的调度handler代码,发现其是异步执行业务逻辑代码,同时设置了获取结果的超时时间,如果超时,则产生了中断信号,如下:

在这里插入图片描述
我们的定时任务也确实配置了超时时间200s,低于我们的业务执行耗时,这下问题定位到了,有两种解决:

  1. 定时任务超时时间超大
  2. 定时任务,业务代码异步执行
    总结一下:在使用xxl-job的时候如果出现了类似java.sql.SQLException: interrupt的问题,看下是不是自己的任务执行时间超过了配置的定时任务超时时间
http://www.lryc.cn/news/473680.html

相关文章:

  • jmeter压测工具环境搭建(Linux、Mac)
  • docker设置加速
  • 使用requestAnimationFrame写防抖和节流
  • Puppeteer 与浏览器版本兼容性:自动化测试的最佳实践
  • Java方法重写
  • vscode通过.vscode/launch.json 内置php服务启动thinkphp 应用后无法加载路由解决方法
  • Webserver(2.6)有名管道
  • 四足机器人实战篇之一:波士顿spot机器人工程实现分析
  • TensorFlow 预训练目标检测模型集合
  • 字符串的区别
  • EMR Serverless Spark:一站式全托管湖仓分析利器
  • Linux find 匹配文件内容
  • 【Redis优化——如何优雅的设计key,优化BigKey,Pipeline批处理Key】
  • 数据结构与算法分析:你真的理解图算法吗——深度优先搜索(代码详解+万字长文)
  • LinkedList 分析
  • 【C/C++】模拟实现strlen
  • mybatis从浅入深一步步演变分析
  • Java阶段三02
  • 【Linux】掌握库的艺术:我的动静态库封装之旅
  • UE5动画控制 基础
  • 流畅!HTMLCSS打造网格方块加载动画
  • linux命令之top(Linux Command Top)
  • 数据结构-希尔排序(ShellSort)笔记
  • Junit + Mockito保姆级集成测试实践
  • 软件项目管理要点
  • ESP8266 连接 MQTT 服务器EMQX 连接MQTTX
  • Python中如何处理异常情况?
  • openpnp - 在openpnp中单独测试相机
  • Spark窗口函数
  • Idea、VS Code 如何安装Fitten Code插件使用