gpt4 book ai didi

Airflow 调度器调度后续任务很慢

转载 作者:行者123 更新时间:2023-12-04 00:43:44 42 4
gpt4 key购买 nike

当我尝试在 Airflow 1.8.0 中运行 DAG 时,我发现在前任任务完成时间和后继任务被执行的时间之间需要很长时间(通常单个任务的执行时间更长)。 Sequential、Local 和 Celery Executors 的场景也是如此。有没有办法减少提到的开销时间? (就像airflow.cfg 中可以加速DAG 执行的任何参数一样?)
已添加甘特图以供引用:
Gantt chart

最佳答案

正如尼克所说,Airflow 不是实时工具。任务被尽快安排和执行,但下一个任务永远不会在上一个任务之后立即运行。
当你有超过 ~100 个 DAG,每个 DAG 有 ~3 个任务或 DAG 有很多任务(~100 或更多)时,你必须考虑 3 件事:

  • 增加 DagFileProcessorManager 用于加载和执行 Dags (airflow.cfg) 的线程数:

  • [scheduler]

    max_threads = 2


    max_threads 控制选择和执行/终止多少 DAG ( see here)。
    增加此配置可能会 reduce task 之间的时间。
  • 监控您的 Airflow 数据库,看看它是否有任何瓶颈。 Airflow 数据库用于管理和执行流程:

  • 最近我们遇到了同样的问题。任务之间的时间约为 10-15 分钟,我们在 AWS 上使用 PostgreSQL。
    实例没有很好地使用资源; ~20 IOPS、20% 的内存和 ~10% 的 CPU,但 Airflow 非常慢。
    在使用 PgHero 查看数据库性能后,我们发现即使是在小表上使用索引的查询也需要花费超过一秒的时间。
    所以我们增加了数据库的大小,Airflow 现在运行得像火箭一样快。 :)
  • 要获取 Airflow 加载 Dags 的时间,请运行命令:

  • airflow list_dags -r

    DagBag parsing time: 7.9497220000000075


    如果 DagBag 解析时间高于约 5 分钟,则可能是个问题。
    所有这些都帮助我们更快地运行 Airflow。我真的建议您升级到 1.9 版,因为此版本修复了许多性能问题
    顺便说一句,我们在生产中使用 Airflow master,使用 LocalExecutor 和 PostgreSQL 作为元数据库。

    关于 Airflow 调度器调度后续任务很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47450855/

    42 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com