ecFlow笔记:定时任务没有启动 - 排查

目录

最近几天接连发生业务系统没有按时运行的故障,给我们维护人员带来巨大的压力。

先不提之前的故障是什么原因,也不管我们应该如何避免这类故障,下面只涉及今天早上应该启动而没启动的任务。

故障

obs_rafs 系统每个时次对应的任务有两个启动时间点,21 时次对应 22:30 和 23:10。

下图是今天早上的截图,昨天 21 时次中 23:10 的任务正常启动,但 22:30 的任务尚未运行。注:00时次是手动启动的,不是异常情况。

单从这一情况无法直接判断原因,可能有多种情况。

不过,一个多小时后我们再次发现 grapes_meso_3km_v4_4 系统的 18 时次也没有启动,依赖时间是 22:31,与 obs_rafs 的 21 时次中一个启动时间仅差 1 分钟。如下图所示

这就说明了 22:30 的时候,ecFlow 一定有某种故障。

排查

检查 ecFlow 的日志,从中提取出所有 5 月 11 日的条目,并查找 22:30 左右的记录,发现下面的日志信息:

MSG:[22:27:25 11.5.2020] chd:complete /mosaic_v3/21/archiving
LOG:[22:27:25 11.5.2020]  complete: /mosaic_v3/21/archiving
LOG:[22:27:25 11.5.2020]  complete: /mosaic_v3/21
LOG:[22:27:25 11.5.2020]  queued: /mosaic_v3
LOG:[22:33:08 11.5.2020]  submitted: /mosaic_v3/housekeeping job_size:2917
LOG:[22:33:08 11.5.2020]  submitted: /mosaic_v3
WAR:[22:33:08 11.5.2020] Job generation for task /mosaic_v3/housekeeping took 342950ms, Exceeds ECF_TASK_THRESHOLD(4000ms)
ERR:[22:33:08 11.5.2020] Jobs::generate: job generation time(342 seconds) is greater than job submission interval of 60 seconds!!

在 22:27:25 时,/mosaic_v3/21/archiving 任务完成,后续应该立即提交 /mosaic_v3/housekeeping 任务。 但 /mosaic_v3/housekeeping 任务的作业脚本生成环节超时,耗时 342 秒,将近 6 分钟,直到 22:33:08 才完成。

我们假定作业脚本生成超时是导致 time 触发器没有按时触发的原因,那么需要满足如下的条件:

  • ecFlow 中作业生成和检查依赖关系等操作是串行的
  • ecFlow 检查时间依赖不是 >=,即超过时间点的任务不会被启动

想要确定以上两点需要进一步分析,包括从源代码中寻找线索。

时间关系,后续的分析过程将在下一篇文章中介绍。