主要观点:团队遇到 Apache Airflow 任务在“已排队”状态无限卡住的生产关键问题,经过深入调查和多种尝试找到临时和最终解决方案,同时强调了组织沟通协调及吸取的经验教训。
关键信息:
- 症状:业务关键的有向无环图(DAG)任务卡在“已排队”状态,经检查发现调度器能检测到 DAG 但任务未到达工作节点,重启调度器和工作节点也无效。
- 深入调查:怀疑是调度器问题,如观察到任务只排队不调度,研究槽位可用性、消息队列健康和心跳通信日志等,发现 Airflow 2.2.2 版本存在导致任务卡在排队状态的已知问题,虽增加
min_file_process_interval
但未解决核心问题。 - 临时缓解措施:增加
parsing_processes
并行处理 DAG 解析,增加scheduler_heartbeat_sec
和min_file_process_interval
降低调度器负载,实施持续监控和临时脚本强制转移任务状态,但对传感器相关任务效果不佳。 - 最终解决方案:决定从 Airflow 2.6.0 回溯特定修复到现有 2.2.2 环境,创建并应用补丁,注意该补丁仅适用于 Celery 执行器,需根据不同执行器调整。
- 组织经验:早期与平台工程团队合作验证 Airflow 架构理解,与利益相关者保持透明沟通,详细记录发现和补救步骤,指定专人负责沟通协调,认识到团队协作的重要性及有支持性的管理者的帮助。
- 关键收获:Airflow 对规模和配置敏感,全面监控和详细日志重要,问题可能在编排层瓶颈,版本特定 bug 影响大,回溯补丁是中间解决方案,跨团队协作影响事件响应结果。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。