Airflow v2.2.5(MWAA v2.0.2)DAG任务仅排队未执行求助
排查Airflow任务实例状态异常(dagrun queued/任务状态None)的方向
1. 检查Executor配置与资源
- 确认Airflow使用的Executor类型(如CeleryExecutor、LocalExecutor),对应组件运行状态:
- 若为CeleryExecutor:用
docker ps查看worker容器状态,执行docker exec <worker-container-id> celery inspect ping验证worker连通性 - 若为LocalExecutor:检查调度器容器的CPU、内存资源是否充足,查看容器日志
docker logs <scheduler-container-id>是否有进程被OOM Killer终止的记录
- 若为CeleryExecutor:用
- 验证队列配置:通过Airflow UI的Admin > Queues确认任务指定的队列存在,且有对应worker监听该队列
2. 验证元数据库连接与状态
- 检查元数据库(如PostgreSQL/MySQL)容器健康状态:
docker ps查看容器状态,执行对应数据库命令(如docker exec <db-container-id> psql -U airflow)验证连接 - 查询元数据库中异常记录:
排查是否存在数据异常或锁表情况-- 查看处于queued状态的dagrun详情 SELECT dag_id, run_id, state, queued_at FROM dag_run WHERE state = 'queued'; -- 关联查看对应任务实例 SELECT task_id, state, dag_run_id FROM task_instance WHERE dag_run_id IN (SELECT run_id FROM dag_run WHERE state = 'queued');
3. 分析调度器详细日志
- 过滤调度器日志中的关键信息:
查找任务调度失败、队列处理异常的报错,比如权限问题、依赖缺失等线索docker logs <scheduler-container-id> | grep -E "queued|task_instance|dag_run"
4. 确认任务依赖与文件权限
- 检查任务依赖:进入worker容器执行
pip list,验证自定义Operator或任务所需的依赖包是否已安装 - 检查DAG文件权限:执行
docker exec <scheduler-container-id> ls -l <dags-folder>,确认调度器有读取DAG文件的权限
5. 排查Docker网络配置
- 确认Airflow各组件(webserver、scheduler、worker、db)在同一Docker网络:
docker network inspect <airflow-network>查看容器网络归属 - 若使用CeleryExecutor,验证Redis/RabbitMQ(消息队列)与worker、scheduler的连接正常,端口无防火墙拦截
内容的提问来源于stack exchange,提问作者Myklebost
相关产品推荐
相关产品推荐

