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

Jenkins流水线Docker容器中Yarn Install拉取包报错(退出码137)求助

解决Yarn Install因内存耗尽被终止(Exit Code 137)的问题

你碰到的Killed报错加上退出码137,其实是系统内核在明确提示:yarn进程因为内存耗尽被强制终止了。虽然从容器的free -m输出看还有不少可用内存,但yarn install在处理大量依赖包的解析、拉取和安装阶段,可能会短时间内占用远超预期的内存,触发了内核的OOM Killer(内存不足杀手)。

下面是几个实用的解决办法,你可以逐一尝试:

  • 给Yarn/Node.js设置内存上限
    Node.js默认的内存限制可能不足以处理大型依赖集,你可以通过环境变量手动调整内存配额,避免进程占用过多内存被杀死。在执行yarn install前先运行:

    export NODE_OPTIONS="--max-old-space-size=8192"
    

    这里的8192代表8GB,你可以根据容器的可用内存灵活调整(比如设为12288即12GB),让Node.js进程的内存使用控制在合理范围内。

  • 优化Yarn的安装流程

    • 改用yarn install --frozen-lockfile命令:这个命令会严格按照项目的yarn.lock文件安装依赖,减少依赖解析时的计算和内存消耗;
    • 清理Yarn缓存:运行yarn cache clean清理旧的缓存文件,避免缓存占用额外内存,之后再重新执行安装。
  • 调高Jenkins容器的内存配额
    如果Jenkins给这个流水线任务分配的Docker容器有内存上限,你可以在流水线的代理配置里增加内存分配。比如:

    agent {
      docker {
        image 'your-node-runtime-image'
        args '-m 16g' // 给容器分配16GB内存,可根据实际情况调整
      }
    }
    
  • 临时启用Swap空间作为补充
    从你的内存输出看,容器没有启用Swap分区。Swap可以作为内存的临时补充,当内存不足时缓解压力。你可以在容器内执行以下命令临时启用:

    # 创建一个4GB的swap文件
    fallocate -l 4G /swapfile
    chmod 600 /swapfile
    mkswap /swapfile
    swapon /swapfile
    

    注意Swap会降低性能,所以这只是临时应急方案,长期还是建议从优化依赖或调整内存配额入手。

内容的提问来源于stack exchange,提问作者Aditya Babu Mallisetti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 20:42:30