我最近从v1.7.1.2升级到v1.9.0,升级后我注意到CPU使用率显着增加。在进行了一些挖掘之后,我将其跟踪到这两个调度程序配置选项:min_file_process_interval(默认为0)和max_threads(默认为2)。
正如预期的那样,增加min_file_process_interval可以避免紧密循环并在空闲时丢弃CPU使用率。但我不明白为什么min_file_process_interval影响任务执行?
如果我将min_file_process_interval设置为60s,它现在在我的DAG中执行每个任务之间等待不少于60秒,所以如果我的dag有4个连续任务,它现在已经为我的执行时间增加了4分钟。例如:
start -> [task1] -> [task2] -> [task3] -> [task4]
^ ^ ^ ^
60s 60s 60s 60s
我在测试环境和prod环境中设置了Airflow。这在我的生产环境中不是一个问题(虽然仍然有关),但对我的测试环境来说是个大问题。升级后,CPU使用率显着提高,因此我要么接受更高的CPU使用率,要么尝试使用更高的配置值来降低CPU使用率。但是,这会增加我的测试dags执行时间。
为什么min_file_process_interval影响DAG调度后的任务之间的时间?是否有其他配置选项可以解决我的问题?
答案 0 :(得分:2)
您可能想要研究的另一个选择是
SCHEDULER_HEARTBEAT_SEC
此设置通常也设置为非常紧凑的间隔,但可能会松散一点。此设置与
结合使用MAX_THREADS
为我们做了诀窍。开发机器足够快,可以重新部署,但没有热的,发光的CPU,这很好。
答案 1 :(得分:0)
最可能的原因是dags文件夹中的python文件过多,并且气流调度程序对实例化DAG的扫描过多。
建议先减少调度程序和工作程序下的dag文件数量。同时,将SCHEDULER_HEARTBEAT_SEC和MAX_THREADS值设置为尽可能大。