首页/数据/数据工程与 ETL 速查/airflow.cfg 关键参数

airflow.cfg 关键参数

airflow.cfg 控制调度节拍与并发上限:parallelism(全局并行度)、max_active_tasks_per_dag、max_active_runs_per_dag、dag_dir_list_interval 等;调参前先量清任务时长与槽位占用。

airflow.cfg 主要管什么

airflow.cfg 控制调度节拍与并发上限:parallelism 是整个 Airflow 同时运行任务数的上限,max_active_tasks_per_dag 限制单个 DAG 的任务并行,max_active_runs_per_dag 限制单个 DAG 的实例并行,dag_dir_list_interval 决定多久扫描一次 DAG 目录。调参前先量清任务平均时长与槽位占用情况,否则只是在不同瓶颈之间来回搬问题。

基本信息

parallelism整个 Airflow 同时运行的任务数上限
max_active_tasks_per_dag单个 DAG 同时运行的任务数
max_active_runs_per_dag单个 DAG 并行运行的实例数
dag_dir_list_intervalDAG 目录扫描间隔,单位秒

典型使用场景

  • 并发提不上:确认 parallelism 与 worker 槽位是否匹配
  • 补数冲突:限制 max_active_runs,避免多个实例写同一分区
  • 新 DAG 上线:dag_dir_list_interval 决定多久能被发现
  • 调度延迟:min_file_process_interval 影响 DAG 解析频率
  • 容量评估:按 parallelism 与平均任务时长估算吞吐上限

并发相关配置

并发相关配置
[core]
parallelism = 64                  # 全局并行上限
max_active_tasks_per_dag = 16     # 单 DAG 任务并行
max_active_runs_per_dag = 2       # 单 DAG 实例并行
dag_dir_list_interval = 300       # 每 300 秒扫描一次 DAG 目录
min_file_process_interval = 30    # DAG 解析最小间隔(秒)
catchup_by_default = False        # 新建 DAG 不自动补历史

关键参数与影响

参数调大的效果代价
parallelism全局吞吐提升调度器与元数据库压力上升
max_active_tasks_per_dag单 DAG 跑得更快抢占全局槽位,影响其他 DAG
max_active_runs_per_dag补数更快同分区并发写,要求任务幂等
dag_dir_list_interval新 DAG 更快可见调度器解析开销上升
min_file_process_interval解析更及时大 DAG 目录下 CPU 占用升高
调大 max_active_runs 前先确认任务幂等与分区隔离,否则补数会和日常跑数互相覆盖,数据错乱后还很难定位是哪个实例写进去的。
只调 parallelism 不看 worker 的实际并发槽位,全局上限再高也用不起来;两处配置要一起调,并以实际观察到的排队时长验证效果。

配置改动的落地方式

airflow.cfg 的改动要分角色看待:调度器相关参数改完需要重启 scheduler 才生效,worker 相关参数要重启 worker,部分参数(如 dag_dir_list_interval)只影响扫描行为。生产环境应把配置纳入版本管理,并区分「环境级差异」与「临时应急调整」——临时改大的并行度若没有记录,事后没人知道当时的容量边界在哪里,下一轮容量评估只能靠猜。

易错点

  • 只调 parallelism 不调 worker 并发数,槽位依然不够,排队情况没有改善
  • catchup_by_default 保持 True 时,新建 DAG 会从 start_date 开始补历史,瞬间产生大量实例
  • dag_dir_list_interval 调得过小,调度器把 CPU 花在解析 DAG 上,反而拖慢调度
  • 随意调大 max_active_runs 而未确认分区隔离,补数与日常跑数互相覆盖

数据来源与参考

  • Apache Airflow 官方文档:Configuration Reference([core])
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌