Airflow并行度无法扩容:设置PARALLELISM=40仍仅运行32个任务求助
我们在Kubernetes集群中部署了Airflow,包含调度器、Web服务器、Flower、Redis及4个Worker节点。已更新ConfigMap设置AIRFLOW__CORE__PARALLELISM = 40,按资料这应该支持同时运行约40个任务,但DataDog仪表盘显示任务数始终维持在32左右。当前相关参数:
AIRFLOW__CELERY__WORKER_CONCURRENCY=8 AIRFLOW_VERSION=2.1.2
核心瓶颈:Worker总并发能力不足
当前4个Worker节点,每个Worker的并发数设为8,总并发为 4 * 8 = 32,这直接限制了同时运行的任务数上限——即使全局PARALLELISM设为40,实际能跑的任务数也受限于Worker的总处理能力。
需要检查/调整的配置项
调整Worker并发数或数量:
要达到40的全局并发,需让Worker总并发≥40。比如:- 保持4个Worker,将
AIRFLOW__CELERY__WORKER_CONCURRENCY提高到10(4*10=40); - 保持每个Worker并发8,增加到5个Worker(
5*8=40); - 按需组合调整数量和单节点并发。
- 保持4个Worker,将
确认
AIRFLOW__CORE__DAG_CONCURRENCY:
该参数控制单个DAG的最大并发任务数(默认16)。如果任务集中在少数几个DAG上,即使全局并发足够,单个DAG的上限也会限制整体任务数,需要根据需求调高。检查
AIRFLOW__CORE__MAX_ACTIVE_TASKS_PER_DAG_RUN:
该参数控制单个DAG运行实例的最大活跃任务数(默认16),如果单DAG实例的任务数受此限制,也会影响整体并发量,需按需调整。验证配置是否生效:
更新ConfigMap后,需确保所有Worker Pod已重启,新配置才会加载。可以通过查看Worker日志或执行airflow config get-value celery worker_concurrency命令确认当前生效的参数。可选:检查
AIRFLOW__CELERY__CELERYD_MAX_TASKS_PER_CHILD:
该参数控制每个Worker进程处理的任务数上限(默认1000),如果设置过小会导致Worker频繁重启,间接影响并发能力,需确保数值合理。
内容的提问来源于stack exchange,提问作者Robert Riley

