SpringBoot集成Quartz 开始正常执行,一段时间后任务不执行

发布时间 2023-06-16 15:36:53作者: mingruqi

PS: 最近项目需要定时进行数据汇总,引入了Quartz之后发现,开始的时候任务可以执行,一段时间后后台看不到报错,但是任务却不执行。

  • 出现这种问题还没报错,那么大概率是quartz自己的线程全部用完,导致任务无法继续执行。

  • 首先我们的定时任务是基于数据库管理的,非内存。此处可配置。

解决问题的思路

  1. 首先通过日志排查错误,但是没有错误日志。

  2. 查看quartz的数据表qrtz_triggers

    任务就算不执行也会往后延期。这个下次执行时间是动态的。因为任务没法执行,时间就会慢慢的向后延。

  3. 此时首先要查看数据库连接数和quartz的线程总数。

    因为可能数据库的连接数满了也会导致问题(这个问题会报错,因为我遇到了,所以说下)

  4. 查看quartz的线程总数

    此处我设置了50个线程。

  5. 查看正在执行的任务占用了几个线程qrtz_fired_triggers 这个数据表会显示正在执行的线程有哪些

    我这边显示是一个,但是问题没解决前是50个。正好占用了所有的quartz线程数,导致不报错也不运行。

  6. 定位到问题后,你就可以着手看下哪些任务一直占有着线程,解决问题。


===========================================================
作者:峨眉山吴彦祖丶
链接:https://www.jianshu.com/p/965848835585
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。