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

Airflow DAG持续排队未执行:调度器故障确认与重置问询

1. 如何确认Airflow调度器是否故障?
  • 检查调度器进程状态
    • 在部署节点执行 ps aux | grep airflow-scheduler,确认是否有存活的调度器进程,排查是否存在异常退出的情况。
    • 若使用systemd管理服务,执行 systemctl status airflow-scheduler,查看服务是否处于active (running)状态,同时检查日志输出中的错误信息。
  • 查看调度器日志
    • 直接查看日志目录(默认路径为$AIRFLOW_HOME/logs/scheduler)下的最新日志,搜索是否存在数据库连接失败、线程卡死、依赖缺失等报错。
    • 也可通过Airflow Web UI的Admin > Logs入口,选择调度器日志进行查看。
  • 验证数据库连接与状态
    • 执行 airflow db check 验证元数据库(PostgreSQL/MySQL等)连接是否正常,数据库连接异常会直接导致调度器无法工作。
    • 检查数据库是否存在锁表或连接数耗尽问题:PostgreSQL可执行SELECT * FROM pg_locks WHERE NOT granted;查询锁情况,MySQL用SHOW PROCESSLIST;查看当前连接。
  • 检查DAG解析与调度状态
    • 在Web UI的Browse > DAG Runs中确认是否有新的DAG Run生成,长时间无新Run则说明调度器未正常生成任务。
    • 执行 airflow dags list-import-errors,排查是否存在DAG解析错误,大量解析错误会阻塞调度器运行。
    • 执行 airflow scheduler jobs 查看调度器当前作业状态,确认是否存在停滞任务。
2. 如何重置Airflow调度器(含Web服务器)
  • 停止相关进程
    • 若使用systemd管理:
      sudo systemctl stop airflow-scheduler
      sudo systemctl stop airflow-webserver
      
    • 若为直接运行的进程,可通过pkill -f airflow-scheduler和pkill -f airflow-webserver终止进程(建议先通过ps aux确认进程ID,避免误杀)。
  • 清理残留状态
    • 清理元数据库中过期的DAG Runs和任务实例:
      airflow db clean --clean-before-today
      
    • 可选:执行 airflow scheduler clear 重置调度器心跳记录(此操作会清除调度器运行状态,需谨慎使用)。
  • 重启服务
    • systemd方式:
      sudo systemctl start airflow-scheduler
      sudo systemctl start airflow-webserver
      
    • 直接后台启动:
      airflow scheduler -D
      airflow webserver -D -p 8080
      
  • 验证重置效果
    • 再次通过systemctl status或ps aux确认进程状态。
    • 查看Web UI的DAG Runs页面,确认排队的任务是否开始被调度,是否有新的DAG Run生成。
    • 检查调度器日志,确认无报错信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:10:34