AWS MWAA 2.7.2中Airflow任务报return code -9错误的解决咨询
解决AWS MWAA 2.7.2任务返回code -9的方案
先明确:task exited with return code -9 就是任务进程被Linux内核强制终止了,核心原因几乎都是内存不足(OOM)。升级到MWAA 2.7.2后出现该问题,大概率是新版本Airflow、依赖包或调度逻辑的内存需求上升导致,以下是具体解决步骤:
调整任务/Worker内存配额
先定位出问题的任务所属Worker队列,在MWAA控制台调高该队列的Worker实例内存规格。如果是单个任务需要额外资源,也可以在DAG代码中直接指定内存限制,比如使用PythonOperator时:task = PythonOperator( task_id="data_process_task", python_callable=your_process_func, executor_config={"KubernetesExecutor": {"memory": "4096Mi"}} # 若使用CeleryExecutor,直接在控制台修改Worker实例类型即可 )注意:MWAA不同实例类型对应不同内存上限,需根据任务实际消耗选择合适规格。
排查任务内存泄漏
检查任务代码是否存在内存未释放的情况——比如数据库连接用完未关闭、循环中累积超大列表、临时对象未清理。可以在任务中加入内存监控代码,定位内存暴涨的节点:import psutil def your_process_func(): print(f"当前内存占用: {psutil.Process().memory_info().rss / 1024 / 1024:.2f} MB") # 任务逻辑代码...优化任务逻辑降低内存消耗
- 避免单任务处理超大数据集,拆分任务为多个子任务并行执行
- 替换内存密集型操作,比如用Pandas的
chunksize参数流式读取大文件,替代全量加载到内存 - 任务执行完毕后及时清理临时文件、缓存变量
检查依赖包兼容性
升级MWAA 2.7.2后,确认任务使用的第三方依赖(如Pandas、PySpark等)版本是否兼容。部分旧版本依赖可能存在内存占用过高的bug,可在requirements.txt中指定兼容新版本的依赖包,重新部署MWAA环境。调整Airflow核心配置
在MWAA的自定义airflow.cfg中修改以下参数:worker_autoscale:限制Worker的并发任务数,避免单Worker负载过高max_task_instance_per_host:降低单台主机可运行的任务实例上限celery_worker_prefetch_multiplier:设置为1,避免Worker预取过多任务占用内存
通过日志定位具体问题任务
进入CloudWatch的MWAA日志组,筛选return code -9相关日志,先确定是哪些任务出现问题,再针对性优化,避免无差别调整资源。
内容的提问来源于stack exchange,提问作者Suresh
相关产品推荐
相关产品推荐

