SpringBoot集成Quartz 开始正常执行,一段时间后任务不执行
PS: 最近项目需要定时进行数据汇总,引入了Quartz之后发现,开始的时候任务可以执行,一段时间后后台看不到报错,但是任务却不执行。
-
出现这种问题还没报错,那么大概率是quartz自己的线程全部用完,导致任务无法继续执行。
-
首先我们的定时任务是基于数据库管理的,非内存。此处可配置。
解决问题的思路
-
首先通过日志排查错误,但是没有错误日志。
- 查看quartz的数据表qrtz_triggers
任务就算不执行也会往后延期。这个下次执行时间是动态的。因为任务没法执行,时间就会慢慢的向后延。
- 此时首先要查看数据库连接数和quartz的线程总数。
因为可能数据库的连接数满了也会导致问题(这个问题会报错,因为我遇到了,所以说下)
- 查看quartz的线程总数
此处我设置了50个线程。
- 查看正在执行的任务占用了几个线程qrtz_fired_triggers 这个数据表会显示正在执行的线程有哪些
我这边显示是一个,但是问题没解决前是50个。正好占用了所有的quartz线程数,导致不报错也不运行。
-
定位到问题后,你就可以着手看下哪些任务一直占有着线程,解决问题。
===========================================================
链接:https://www.jianshu.com/p/965848835585
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2019-06-16 spring与mybatis三种整合方法
2019-06-16 SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)