Airflow 1.9.0 - 任务执行之间的长时间延迟

时间:2018-04-25 01:54:48

标签: airflow airflow-scheduler

我最近从v1.7.1.2升级到v1.9.0,升级后我注意到CPU使用率显着增加。在进行了一些挖掘之后,我将其跟踪到这两个调度程序配置选项:min_file_process_interval(默认为0)和max_threads(默认为2)。

正如预期的那样,增加min_file_process_interval可以避免紧密循环并在空闲时丢弃CPU使用率。但我不明白为什么min_file_process_interval影响任务执行?

如果我将min_file_process_interval设置为60s,它现在在我的DAG中执行每个任务之间等待不少于60秒,所以如果我的dag有4个连续任务,它现在已经为我的执行时间增加了4分钟。例如:

start -> [task1] -> [task2] -> [task3] -> [task4]
        ^          ^          ^          ^
        60s        60s        60s        60s

我在测试环境和prod环境中设置了Airflow。这在我的生产环境中不是一个问题(虽然仍然有关),但对我的测试环境来说是个大问题。升级后,CPU使用率显着提高,因此我要么接受更高的CPU使用率,要么尝试使用更高的配置值来降低CPU使用率。但是,这会增加我的测试dags执行时间。

为什么min_file_process_interval影响DAG调度后的任务之间的时间?是否有其他配置选项可以解决我的问题?

2 个答案:

答案 0 :(得分:2)

您可能想要研究的另一个选择是

SCHEDULER_HEARTBEAT_SEC

此设置通常也设置为非常紧凑的间隔,但可能会松散一点。此设置与

结合使用
MAX_THREADS

为我们做了诀窍。开发机器足够快,可以重新部署,但没有热的,发光的CPU,这很好。

答案 1 :(得分:0)

最可能的原因是dags文件夹中的python文件过多,并且气流调度程序对实例化DAG的扫描过多。

建议先减少调度程序和工作程序下的dag文件数量。同时,将SCHEDULER_HEARTBEAT_SEC和MAX_THREADS值设置为尽可能大。