当前位置:   article > 正文

定时任务失效的排查_定时任务不执行的原因

定时任务不执行的原因

最近遇到一个线上问题,记录一下

前景:项目中用的很多定时任务,使用的是spring自带的定时任务,项目刚开始上线的时候,定时任务确实可以正常运行,但是某一天发现,项目没有数据了,推测可能是由于定时任务没有执行,于是查看日志,发现两天前所有的定时任务全部停止了

排查思路1:可能是某个任务抛出异常导致的,于是本地测,发现抛异常并不会导致所有定时任务全部停止

排查思路2:spring的定时器是单线程的,能不能给他改成多线程呢。

排查思路3:既然spring自带的定时任务是单线程的,可以使用arthas,查看线程状态

先找到日志中的定时任务线程名称

 然后使用arthas找到指定的线程,查看线程状态

 于是继续查看这个线程的具体状态

 根据自己的推测,继续查看日志

 发现在这次之后确实没有响应,说明这个线程就在一直等这个响应

然后查看代码,发现在请求的时候没有设置超时时间,导致我们的线程一直等待第三方的响应,于是加上超时时间的配置

 解决!!

一开始有想过,spring的定时任务确实是单线程的,能不能给他改成多线程的,问题解决之后再回顾这个方法, 也存在问题,就算改成多线程的,一个线程等待会重启另外一个线程,要是第三方服务经常不稳定,就会导致很多线程都处于空等状态,就会导致系统性能急剧下降,所以遇到问题应先排查最根本的问题,不能想当然,找到病因,对症下药,才有奇效!

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/83616
推荐阅读
相关标签
  

闽ICP备14008679号