You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Airflow任务已调度但未执行,资源利用率低问题排查求助

Airflow 2.2.1任务调度延迟,仅6-8个Worker运行任务,无法充分利用资源

近期我们的流水线执行时长显著飙升,排查发现Airflow任务长时间处于调度状态,多数情况下仅6-8个worker在执行任务。

环境:Airflow 2.2.1 部署于 AWS EC2(Linux)

Airflow.cfg 核心配置:

executor = LocalExecutor
parallelism = 32
max_active_tasks_per_dag = 16
max_active_runs_per_dag = 16

(附任务状态、Pool状态、Worker状态截图)

已尝试的无效方案:

  • 将部分任务转移至不同资源池
  • 重启Airflow

现求助:是什么配置或因素导致该问题?如何调整以确保充分利用所有可用worker资源?


问题根因分析

你当前使用的LocalExecutor在单个EC2节点上通过本地进程运行任务,实际并行任务数受以下关键因素限制:

  1. EC2实例硬件资源:LocalExecutor默认将max_workers设为EC2的CPU核心数(Airflow 2.2.1中该参数默认值等于CPU核心数)。若你的EC2实例是8核,最多只能同时运行8个任务,这和你观察到的6-8个worker运行的情况完全匹配,此时parallelism=32的配置会被硬件资源限制覆盖。
  2. 未显式配置max_workers:你的airflow.cfg中未设置max_workers参数,LocalExecutor自动使用CPU核心数作为上限,无法达到parallelism=32的并发量。
  3. 资源池配额限制:若所有资源池的总配额之和小于max_workers或parallelism,也会限制并发任务数。

解决方案

  1. 调整max_workers配置:
    在airflow.cfg中添加或修改参数:

    max_workers = 32
    

    注意:设置值不能超过EC2实例的CPU核心数和内存承载能力,若32超出实例资源上限,需先升级EC2实例规格。

  2. 验证资源池总配额:
    确保所有资源池的Slots总和至少等于max_workers或parallelism(取较小值)。可通过Airflow UI的Admin > Pools查看并调整各池配额,例如增大default池的Slots值至与max_workers一致。

  3. 检查DAG级并发限制:
    当前max_active_tasks_per_dag=16、max_active_runs_per_dag=16,若仅运行1个DAG,最多只能并行16个任务,无法达到32的总并发。若有多个DAG,需确保各DAG的并发数之和不超过max_workers和parallelism的限制。

  4. 切换Executor类型:
    若EC2单节点资源无法满足32并发需求,建议切换为CeleryExecutor或KubernetesExecutor,实现多节点分布式任务执行,充分利用集群资源。

内容的提问来源于stack exchange,提问作者sriram926

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 10:30:16