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

已配置内存参数仍报错:GitLab CI Docker执行器pnpm install内存不足

解决GitLab CI Docker执行器pnpm install内存不足(OOM)问题

我在使用Docker执行器运行GitLab CI流水线时,已设置NODE_OPTIONS="--max-old-space-size=4096",但执行pnpm install仍因内存不足报错失败。

错误信息

<--- Last few GCs --->
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory

已尝试的方案

  • 增大Node.js内存限制:
    variables:
      NODE_OPTIONS: "--max-old-space-size=4096"
    script:
        - export NODE_OPTIONS=${NODE_OPTIONS} 
    
  • 在GitLab Runner的config.toml中配置Docker内存:
    [runners.docker]
      memory = "4G"
      memory_swap = "4G"
    

有效解决方法

1. 显式给pnpm传递Node内存参数

pnpm可能不会自动继承全局NODE_OPTIONS,需在命令中直接指定:

pnpm install --node-options="--max-old-space-size=6144"

或者在脚本中先设置环境变量再执行安装:

script:
  - export NODE_OPTIONS="--max-old-space-size=6144"
  - pnpm install

2. 调整Docker容器内存与交换空间配置

将容器内存提升至6G以上,并允许使用交换空间,修改Runner的config.toml:

[runners.docker]
  memory = "6G"
  memory_swap = "-1"  # 允许容器使用主机所有交换空间

若限制交换空间,需保证memory_swap大于memory,否则容器无法利用交换区缓解内存压力。

3. 使用pnpm内存优化选项

启用--shamefully-hoist减少重复依赖的内存占用,若无需严格校验锁文件,可添加--no-frozen-lockfile降低内存开销:

pnpm install --shamefully-hoist --no-frozen-lockfile

4. 清理或调整CI缓存

旧缓存可能积累大量冗余依赖,导致安装时内存占用飙升。可临时禁用缓存测试:

cache:
  policy: pull

或重新配置缓存路径,只保留必要内容:

cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
    - .pnpm-store/

内容的提问来源于stack exchange,提问作者vita-mina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:57:16