<h1>背景</h1>
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
</div>
未经允许不得转载:紫竹林-程序员中文网 » Apache DolphinScheduler 工作流卡死,怎么解决?