【问题标题】:Airflow delays in picking the dags from DAG folder从 DAG 文件夹中挑选 dag 时出现气流延迟
【发布时间】:2021-09-19 04:35:50
【问题描述】:

我们使用的是airflow 版本2,当我们将DAG 文件放在DAG 文件夹中时,需要20 到30 秒才能将dag 反映在airflow dag 列表中。

注意:我们使用 Celery 执行器和 postgres 作为数据库。

有人可以帮助我了解如何使气流更快地拾取 DAG 吗? 是否有它的配置/任何想法都是可观的。

谢谢, 哈利

【问题讨论】:

    标签: airflow-scheduler airflow


    【解决方案1】:

    最好的办法是减少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 这可能有助于了解调度程序的工作原理以及您可以进行哪些调整。

    【讨论】:

    • 感谢@Jarek,我们是否有任何气流 api 或 cli 命令来强制从 dag 文件夹中读取 dag?
    • 没有。这一切都由调度程序处理控制。
    • 我调整了最小文件进程间隔和解析进程,但气流仍然需要 30 到 40 秒才能捡起 dags !还有其他方法可以使用调度程序更快地加载 dags 吗?
    • 你需要看看你的性能瓶颈在哪里。我只是在做一个描述它的公关——你可能想看看github.com/apache/airflow/pull/18356
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 2016-02-04
    • 2021-10-01
    • 1970-01-01
    • 2022-10-15
    相关资源
    最近更新 更多