当 Airflow 任务在队列中卡住时:一个真实世界的调试故事

主要观点:团队遇到 Apache Airflow 任务在“已排队”状态无限卡住的生产关键问题,经过深入调查和多种尝试找到临时和最终解决方案,同时强调了组织沟通协调及吸取的经验教训。
关键信息:

  • 症状:业务关键的有向无环图(DAG)任务卡在“已排队”状态,经检查发现调度器能检测到 DAG 但任务未到达工作节点,重启调度器和工作节点也无效。
  • 深入调查:怀疑是调度器问题,如观察到任务只排队不调度,研究槽位可用性、消息队列健康和心跳通信日志等,发现 Airflow 2.2.2 版本存在导致任务卡在排队状态的已知问题,虽增加min_file_process_interval但未解决核心问题。
  • 临时缓解措施:增加parsing_processes并行处理 DAG 解析,增加scheduler_heartbeat_secmin_file_process_interval降低调度器负载,实施持续监控和临时脚本强制转移任务状态,但对传感器相关任务效果不佳。
  • 最终解决方案:决定从 Airflow 2.6.0 回溯特定修复到现有 2.2.2 环境,创建并应用补丁,注意该补丁仅适用于 Celery 执行器,需根据不同执行器调整。
  • 组织经验:早期与平台工程团队合作验证 Airflow 架构理解,与利益相关者保持透明沟通,详细记录发现和补救步骤,指定专人负责沟通协调,认识到团队协作的重要性及有支持性的管理者的帮助。
  • 关键收获:Airflow 对规模和配置敏感,全面监控和详细日志重要,问题可能在编排层瓶颈,版本特定 bug 影响大,回溯补丁是中间解决方案,跨团队协作影响事件响应结果。
阅读 25
0 条评论