Airflow 1.9.0 -任务执行间隔时间长

12

我最近从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设置为60秒,则现在它等待执行我的DAG中每个任务之间的时间不少于60秒,因此,如果我的DAG有4个连续任务,则现在已经将4分钟添加到我的执行时间中。例如:

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

我在测试环境和生产环境中都安装了Airflow。在我的生产环境中这不是很严重的问题(虽然仍然令人担忧),但对我的测试环境来说是一个大问题。升级后,CPU使用率显著增加,所以我要么接受更高的CPU使用率,要么尝试通过更高的配置值减少它。不过,这会显著增加我的测试DAG执行时间。

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


可能是任务之间的Airflow延迟的重复问题。 - Hito
2个回答

3
你可能需要了解的另一种选择是:
SCHEDULER_HEARTBEAT_SEC

这个设置通常也会被设置为非常紧密的间隔,但可以稍微放松一下。这个设置与...(后续内容缺失)
MAX_THREADS

这对我们来说起到了作用。开发机器足够快以进行重新部署,但没有过热、发光的CPU,这是好事。


我也尝试过调整这些设置,但它们并没有解决我的问题。降低 max_threads 影响 CPU 使用率,同时也影响运行时间。看起来 DAG 需要在任务继续之前被“处理”,因此将其降至 1 几乎会使我的运行时间翻倍。我还尝试过调整更高和更低的 scheduler_heartbeat_sec 选项,但我没有看到任何性能变化。CPU 使用率来自进程管理器,它似乎也决定了何时运行任务。 - flutikoff
2
我和原帖作者有类似的问题,但那些设置并没有起到作用。而且我只有一个包含一个微小任务的微小DAG!DagBag填充时间为0.004秒。但调度程序仍然在任务之间延迟40多秒。在我的情况下,我正在对1000多天的任务进行大量回溯。每个任务需要3秒钟,然后Airflow会无所事事地旋转40秒钟,然后安排下一个回溯日期。由于长期回溯小任务存在问题,我不得不停止使用Airflow。 - eraoul

3
最可能的原因是dags文件夹中有太多的python文件,导致airflow调度器扫描实例化的DAG过程过于频繁。建议先减少调度器和工作器下的DAG文件数量,同时将SCHEDULER_HEARTBEAT_SEC和MAX_THREADS值尽量设置大一些。

1
这并没有回答问题。一旦您获得足够的声望,您将能够在任何帖子上发表评论;相反,提供不需要询问者澄清的答案。 - Til

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接