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

Composer 2.6.6任务报Negsignal.SIGKILL但Dataproc作业实际成功

问题背景

我们使用Composer 2.6.6(对应Airflow 2.5.3),有一个提交到Dataproc Serverless Batches的作业VANI-UEBA3。Dataproc Serverless UI显示作业运行成功,但Airflow(Composer)UI却频繁报Task exited with Negsignal.SIGKILL错误(该错误表示任务因资源占用过高被系统终止)。相关错误日志片段如下:

[2024-06-10, 00:41:54 UTC] {credentials_provider.py:353} INFO - Getting connection using google.auth.default() since no explicit credentials are provided.
[2024-06-10, 00:44:32 UTC] {local_task_job.py:212} INFO - Task exited with return code Negsignal.SIGKILL
[2024-06-10, 00:44:33 UTC] {taskinstance.py:2599} INFO - 0 downstream tasks scheduled from follow-on schedule check

由于作业实际运行在Dataproc Serverless集群而非Airflow集群,理论上作业完成后Airflow侧不应出现该错误,请问问题原因及解决方法?

原因分析

这个问题的核心是Airflow Worker进程(而非Dataproc作业本身)因资源不足被系统OOM Killer终止,具体诱因包括:

  • Airflow Worker节点的CPU/内存配额过低:虽然Dataproc作业在远端集群执行,但Airflow Worker需要持续轮询作业状态、拉取日志或处理结果,低配置Worker会因持续负载耗尽资源触发SIGKILL。
  • 大日志量拉取压力:如果Dataproc作业生成海量日志,Airflow Worker同步拉取并处理这些日志时会占用大量内存,直接触发OOM。
  • 旧版本Dataproc Hook的低效轮询:Airflow 2.5.3对应的Dataproc Hook存在轮询间隔过短、状态检查逻辑未优化的问题,导致Worker进程长期高负载运行。
解决方法
  • 提升Worker资源配置:在Composer控制台调整Worker节点的机器类型,选择更高配置的实例(比如从n1-standard-1升级到n1-standard-2);同时修改Airflow的worker_memory、worker_cpu参数,增加单个Worker进程的可用资源配额。
  • 优化日志拉取策略:在Dataproc作业配置中设置日志过滤规则,仅保留关键日志;或者在Airflow任务中禁用全量日志拉取,只同步作业状态而非完整日志内容。
  • 调整状态轮询间隔:修改Dataproc任务的poll_interval参数,延长两次状态检查的时间间隔(比如从默认10秒改为30秒),降低Worker的轮询频率。
  • 升级Airflow/Dataproc Hook版本:条件允许的话,升级Composer到更高版本(对应Airflow 2.6+),新版本Hook优化了轮询逻辑和资源占用,能有效避免这类问题。
  • 排查内存泄漏:通过Composer监控面板查看Worker进程的内存使用趋势,确认是否存在自定义Operator或Hook的内存未释放问题,及时修复代码中的泄漏点。

内容的提问来源于stack exchange,提问作者Karan Alang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:52:41