Apache DolphinScheduler 工作流卡死,怎么解决?
背景
Apache DolphinScheduler 有时候可能会出现工作流卡死问题:
工作流显示运行状态(小齿轮一直转),但进入工作流查看各任务实例却是没有运行的状态。工作流执行时间超时严重,有的甚至达到几天都执行不完。
工作流显示运行状态,进入工作流,各子工作流也显示运行状态,但再进入子工作流,各任务实例其实已经运行完了,此时子工作流卡节点死不动一直运行状态,下一个节点也不调起。持续很久都不结束。
解决思路
发生这种情况,根据以往处理经验,只有一种可能:那就是 Apache DolphinScheduler 操作 MySQL 数据库超时了,MySQL 出现了死锁、事务超时、查询时间长等,导致 Apache DolphinScheduler 状态与数据库不同步了。工作流也无法继续下去。
解决方案
一般 Apache DolphinScheduler 的数据库操作超时,就会卡住,有的会卡在调数据库前,有的是会卡在调数据库后,对数据库基本是写操作。卡住咱们也没法,只能保证数据库能用了,然后再重试之前的操作。
我们一般采用如下方案:
查看 Apache DolphinScheduler MySQL 数据库的工作流定义、任务定义、工作流实例、任务实例等表进行简单的更新操作是否存在超时/锁表等问题。
如果 MySQL 没问题
可以查看前后端状态是否一致,不一致可以人工修改库强制改成一致的,让流程继续下去。
如果状态一致,可以杀死工作流,手工删除工作流实例,然后重启补数调度。
如果 MySQL 有问题
是否查询慢更新慢,查看 MySQL 机器是否资源不够了。
是否无法查询或更新,发生了锁表,通过 show processlist,看哪些数据库连接连接时长很长,尤其是那些 sleep 的,将该连接 kill 掉“kill processid”。processid 是 show processlist 执行后列表的第一列。
通过上面的解决方案,大体能解决绝大部分问题。有问题评论区大家可以一起沟通。
原文链接:https://blog.csdn.net/f4vinny/article/details/155012377







评论