I.C*_*rfi 4 python directed-acyclic-graphs airflow airflow-scheduler
正如您在图像中看到的那样:
气流在任务执行之间造成太多时间?它几乎占DAG执行时间的30%.我已将airflow.cfg文件更改为:
job_heartbeat_sec = 1
scheduler_heartbeat_sec = 1
Run Code Online (Sandbox Code Playgroud)
但我仍然有相同的延迟率.
为什么它会这样?
小智 7
这是设计的.例如,我使用Airflow执行大型工作流程,其中某些任务可能需要很长时间.气流不适用于需要几秒钟执行的任务,它当然可以用于那个但可能不是最合适的工具.
由于您已经找到要配置的关键设置,因此您可以做的事情并不多.
此外,您可能希望尝试增加调度程序的线程数:
[scheduler]
max_threads = 4
Run Code Online (Sandbox Code Playgroud)
或者可以通过设置环境变量来完成:
AIRFLOW__SCHEDULER__MAX_THREADS=4
Run Code Online (Sandbox Code Playgroud)
但是,不要指望减少那么多的延迟.
30 秒对于任务间延迟来说相当高。在我见过的经过良好调优的环境中,任务和依赖任务之间大约 4-6 秒是一个相当合理的下限,即使对于具有数千个 DAG 的环境也是如此。
正如您已经说过的,增加调度程序心跳 ( scheduler_heartbeat_sec) 和调度程序拥有的线程数 ( scheduler.max_threads) 是减少调度延迟的最佳方法。如果您的任务在其他情况下被阻止(您可以在日志中检查;core.logging_level = DEBUG了解更多信息),那么您应该首先解决这些问题。
如果您已经调整了调度程序心跳和工作线程的数量,但仍然看到高调度延迟,那么您可能需要考虑使用更强大的机器。
| 归档时间: |
|
| 查看次数: |
1523 次 |
| 最近记录: |