4

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

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

编辑:

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

4

1 回答 1

3

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

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

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

于 2019-01-09T21:55:10.487 回答