Airflow 气流1.9.0-任务执行之间的长时间延迟

Airflow 气流1.9.0-任务执行之间的长时间延迟,airflow,airflow-scheduler,Airflow,Airflow Scheduler,我最近从v1.7.1.2升级到v1.9.0,升级后我注意到CPU使用量显著增加。在做了一些挖掘之后,我找到了这两个调度器配置选项:最小文件、进程间隔(默认为0)和最大线程(默认为2) 正如预期的那样,增加min_file_process_interval可以避免紧循环,并在空闲时降低cpu使用率。但我不明白的是,为什么最小文件处理间隔会影响任务的执行 如果我将min_file_process_interval设置为60秒,它现在在执行DAG中的每个任务之间等待的时间不少于60秒,因此,如果我的D

我最近从v1.7.1.2升级到v1.9.0,升级后我注意到CPU使用量显著增加。在做了一些挖掘之后,我找到了这两个调度器配置选项:最小文件、进程间隔(默认为0)和最大线程(默认为2)

正如预期的那样,增加min_file_process_interval可以避免紧循环,并在空闲时降低cpu使用率。但我不明白的是,为什么最小文件处理间隔会影响任务的执行

如果我将min_file_process_interval设置为60秒,它现在在执行DAG中的每个任务之间等待的时间不少于60秒,因此,如果我的DAG有4个连续任务,它现在将为我的执行时间增加4分钟。例如:

start -> [task1] -> [task2] -> [task3] -> [task4]
        ^          ^          ^          ^
        60s        60s        60s        60s
我在测试环境和产品环境中设置了气流。这在我的prod env中不是一个问题(尽管仍然值得关注),但对我的测试env来说是一个大问题。升级后,CPU使用率显著提高,因此我要么接受更高的CPU使用率,要么尝试使用更高的配置值来降低CPU使用率。但是,这会给我的测试DAG执行时间增加很多时间


为什么在安排DAG后,最小文件处理间隔会影响任务之间的时间?还有其他配置选项可以解决我的问题吗?

您可能需要研究的另一个选项是

SCHEDULER_HEARTBEAT_SEC
此设置通常也设置为非常紧的间隔,但可能会稍微放宽。此设置与

MAX_THREADS

他为我们做了这件事。dev机器速度足够快,可以重新部署,但没有热的、发光的CPU,这很好。

最可能的原因是dags文件夹中的python文件太多,而airflow scheduler扫描实例化的DAG太多


建议先减少计划程序和工作程序下的dag文件数。同时,调度程序\u HEARTBEAT\u SEC和MAX\u THREADS的值设置得尽可能大。

我也使用了这些设置,但它们不能解决我的问题。降低max_线程会影响cpu使用率,但也会影响运行时。看起来在任务继续之前需要对DAG进行“处理”,因此将其降至1几乎会使我的运行时间增加一倍。我也尝试了更低和更高的调度器\u心跳\u秒选项,但我没有看到性能上的任何变化。CPU使用率来自进程管理器,这似乎也决定了任务何时运行;那些设置没有帮助。我只有一个小小的DAG,里面有一个小小的任务!行李填充时间为0.004秒。但是调度程序仍然会在任务之间延迟40多秒。在我的例子中,我在1000多天的时间里对任务进行了大量的回填。每项任务需要3秒,然后气流旋转40秒不做任何事情,然后在回填中安排第二天。我不得不停止使用气流,因为小任务上的长期回填基本上被破坏了。可能的重复并不能回答这个问题。一旦你有足够的钱,你将能够;相反