任务之间的气流延迟

时间:2018-04-18 14:40:43

标签: python airflow directed-acyclic-graphs airflow-scheduler

正如您在图像中看到的那样:DAG latency between tasks]气流在任务执行之间花费了太多时间? 它几乎占DAG执行时间的30%。 我已将airflow.cfg文件更改为:

job_heartbeat_sec = 1 
scheduler_heartbeat_sec = 1

但我的延迟率仍然相同。

为什么它会这样?

2 个答案:

答案 0 :(得分:7)

这是设计的。例如,我使用Airflow执行大型工作流程,其中某些任务可能需要很长时间。气流不适用于需要几秒钟执行的任务,它当然可以用于那个但可能不是最合适的工具。

据说,由于您已经找到了要配置的密钥设置,因此您无能为力。

此外,您可能希望尝试增加调度程序的线程数:

   [scheduler]
   max_threads = 4

也可以通过设置环境变量来完成:

AIRFLOW__SCHEDULER__MAX_THREADS=4

但是,不要指望减少那么多的延迟。

答案 1 :(得分:1)

对于任务间延迟,三十秒相当高。在我看到的经过良好调整的环境中,即使对于具有成千上万个DAG的环境,任务与从属任务之间的间隔约4-6秒也是一个相当合理的下限。

正如您已经说过的那样,增加调度程序心跳(scheduler_heartbeat_sec)和调度程序具有的线程数(scheduler.max_threads)是减少调度延迟的最佳方法。如果您的任务在其他条件下被阻止(您可以在日志中查看; core.logging_level = DEBUG以获得更多信息),那么您应该首先解决这些问题。

如果您既调整了调度程序的脉动信号,又调整了工作线程的数量,但仍然看到较高的调度延迟,那么您可能需要考虑使用功能更强大的计算机。

相关问题