xxl-job 同一个任务在运行的过程中出现阻塞的情况,阻塞时长达3天,阻塞期间的任务无法执行,手动kill后恢复

euoag5mw  于 5个月前  发布在  其他
关注(0)|答案(9)|浏览(110)

Please answer some questions before submitting your issue. Thanks!

Which version of XXL-JOB do you using?

2.1.2

Expected behavior

任务正常运行

Actual behavior

我们有一个一分钟调度一次的任务,2022-03-31 11:28:30 的时候调度了一次,但是这次调度始终没有结果,后续的任务正常的触发,但是得不到执行,阻塞时间已有3天,2022-04-02 早上9点发现时,手动kill调了阻塞的任务,后面任务才正常调度

Steps to reproduce the behavior

测试环境未重现此问题

Other information

nzrxty8p

nzrxty8p1#

你这个是不是得看你的任务内容是啥啊,看你描述的这个问题,好像和调度中心,和执行器关系不大,应该是你的业务代码问题吧?

wgx48brx

wgx48brx2#

任务配置

阻塞策略:单机串行
路由策略:最后 一个
Cron: 30 * * * * ? (每分钟执行一次)

问题现象

问题出现之前,任务调度正常,在2022-03-31 11:28:30这个时间时,触发了一次调度,但是这次调度的状态显示是执行中,导致后续触发的调度一直是执行中,直到今天运维才发现,然后我手动终止了任务,后续的调度恢复了正常。

看了下任务代码,最多耗时10几秒左右,不可能会阻塞3天的,但是这个任务在运行的过程中好像执行到一半突然消失了
任务,后面的日志都没有打印出来,什么信息也没有,不知道发生了什么,有大佬遇到这种情况么

djp7away

djp7away3#

任务正常执行完的话,会打印如下几句日志

开始推送消息,消息ID[id1,id2,id3,...]
消息推送成功,推送地址: url1, 消息ID[id1, id2]
消息推送成功,推送地址: url2, 消息ID[id3, id4]
......

出现异常时,任务打印的日志如下

开始推送消息,消息ID[id1,id2,id3,...]

只有这一句日志,好像从这里突然就什么都没有了,异常报错都没有看到

c9x0cxw0

c9x0cxw04#

看了job的源码,发现即使任务出现异常,也会被JobThread捕获的,不会出现阻塞这么久的情况,所以实在是不知道发生了什么

r55awzrz

r55awzrz5#

如果任务没有执行完,同一个任务是不能并发执行的,你可以换个任务执行同样的业务逻辑

azpvetkf

azpvetkf6#

如果任务没有执行完,同一个任务是不能并发执行的,你可以换个任务执行同样的业务逻辑

所以没有太搞明白为什么第一个出现阻塞的任务为什么过去了3天还没有执行完,现实情况下应该是不会执行这么久的,仔细排查第一次阻塞的任务,好像莫名的中断了,什么日志都没有

昨天又生产环境又出现了这种连续阻塞的情况

ubof19bj

ubof19bj7#

你在代码里有没有加锁的地方,或者其它的, 另外可以在阻塞的时候打印一下stack的信息,看一下代码大概是在哪个位置上阻塞着

jchrr9hc

jchrr9hc8#

@wang-yonglin 阻塞的问题解决了吗

rvpgvaaj

rvpgvaaj9#

遇到同样的问题,经过排查是我们业务代码阻塞了。手动kill的时候实际上是终止了线程的阻塞状态(wait、join、sleep)。于是kill之后就可以继续往下执行了。

相关问题