【发布时间】:2021-09-19 04:35:50
【问题描述】:
我们使用的是airflow 版本2,当我们将DAG 文件放在DAG 文件夹中时,需要20 到30 秒才能将dag 反映在airflow dag 列表中。
注意:我们使用 Celery 执行器和 postgres 作为数据库。
有人可以帮助我了解如何使气流更快地拾取 DAG 吗? 是否有它的配置/任何想法都是可观的。
谢谢, 哈利
【问题讨论】:
我们使用的是airflow 版本2,当我们将DAG 文件放在DAG 文件夹中时,需要20 到30 秒才能将dag 反映在airflow dag 列表中。
注意:我们使用 Celery 执行器和 postgres 作为数据库。
有人可以帮助我了解如何使气流更快地拾取 DAG 吗? 是否有它的配置/任何想法都是可观的。
谢谢, 哈利
【问题讨论】:
最好的办法是减少scheduler__min_file_process_interval 参数(这会增加CPU 使用率)
解析 DAG 文件的秒数。 DAG 文件是 每 min_file_process_interval 秒数解析一次。更新到 DAG 在此间隔后反映。保持这个数字低将 增加 CPU 使用率。
但是,这实际上取决于几个因素 - 你有多少 DAG、多少文件解析进程、多少调度程序、排序顺序、间隔参数。
见https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html#id24(调度器参数)
另外,https://airflow.apache.org/docs/apache-airflow/stable/concepts/scheduler.html#scheduler-tuneables 对您可以使用的可调参数有很好的概述
通常,您的方法应该与任何性能改进和优化相同。 Airflow 为您提供了很多“旋钮”来转动,但您的任务(取决于您的特定部署)决定转动哪些旋钮。
例如,如果您发现 CPU 已饱和,您可能需要添加另一个调度程序,因为您的机器解析所有 DAG 的速度可能会很慢。但是当你看到你有一些空闲的 CPU 时,你可能会增加解析进程的数量。如果您使用远程文件系统并且发现您在 i/o 上被阻止,您可能希望增加文件系统的容量(通常云远程文件系统的吞吐量有限)等等。您还可以配置排序顺序 - 即哪些文件是先处理。
我真的建议观看 Airflow Summit 2021 的演讲 - https://youtu.be/DYC4-xElccE 这可能有助于了解调度程序的工作原理以及您可以进行哪些调整。
【讨论】: