考虑到 RAM 和 CPU 的限制,如何使用 Airflow 主动控制 DAG

Spa*_*Bot 5 python load airflow

通过尝试大量示例,我对气流的编程功能非常熟悉。阻止我进一步挖掘的是它如何在不超载 CPU 或 RAM 的情况下执行其工作,是否有一种方法可以控制负载,使其不会过载资源耗尽

我知道一种减少负载的方法,当调度程序执行“更频繁地调度和挑选文件”的工作时,通过将以下字段 min_file_process_interval 和 Scheduler_heartbeat_sec 的值更改为一分钟左右的间隔。虽然它减少了持续的 CPU 上升,但是当间隔过去时(即一分钟后),它会突然恢复到像启动期间一样占用约 95% 的 CPU。你如何减少它呢?至少不会消耗超过 70% 的 CPU ?

编辑:

另外,当scheduler_heartbeat间隔过去时,我看到我的所有python脚本再次执行......这是它的工作方式吗?我认为它会在间隔之后拾取新的 DAG(如果有),否则不会执行任何操作。

dar*_*ous 3

您可以使用一些技术来控制气流上运行的进程数量。

  1. 使用。您可以在 dag 设置中分配池,也可以将其添加到您的操作符中,以便随机 dag 创建者隐藏该详细信息。
  2. 对于回填任务,我认为有一个参数concurrencymax_active_runs该参数是在初始化DAG时定义的
  3. 如果您正在使用CeleryExecutor. 您可以CeleryExecutor在远程计算机上执行。[我自己没有尝试过,但我听说过这方面的成功案例。]

这些是我用过的。您必须明智地进行分配,以控制 CPU 峰值和内存问题。