共享代理 (shared agent) 在 npm install 階段發生記憶體不足 (Out-of-memory) 錯誤

Eric Lin 20 信譽點數
2026-09-16T09:10:58.52+00:00

執行標準的 docker build 流程,失敗 (在 npm install 時發生 OOM 錯誤)

增加 node 記憶體容量,失敗

執行指令,失敗

npm install --max-old-space-size=4096

  • npm cache clean --force npm ci
  • docker system prune -a 4, 請問還有其他方法可以解決這個問題嗎?如何提高共享代理 (shared agent) 上的記憶體限制?
Windows for business | Windows 365 商務版
0 則留言 沒有留言

1 個回答

排序依據: 最舊
  1. Domic Vo 33,350 信譽點數 獨立顧問
    2026-09-16T09:45:41.3433333+00:00

    您好,

    您目前遇到的问题是 Docker build 流程在执行 npm install 时发生 OOM(Out of Memory)错误,即使尝试透过 --max-old-space-size 增加 Node.js 记忆体上限仍然失败。 这通常不是单纯的 Node.js 内存限制,而是 Docker 容器本身或共享代理(shared agent)环境的内存配额不足。

    在 Docker 中,容器默认会继承主机的资源限制,但在 CI/CD pipeline 或共享代理环境中,往往会透过 cgroups 或 orchestrator(例如 Kubernetes、Azure DevOps Agent、GitHub Actions Runner)对容器施加额外的内存上限。 当 npm install 尝试编译大量依赖时,超过这个上限就会触发 OOM。

    要解决这个问题,您需要调整容器或代理的记忆体限制,而不是仅仅修改 Node.js 的参数。 具体做法如下:

    在 Docker 层级,可以在 build 或 run 时指定内存限制,例如:

    代码

    docker build --memory=8g --memory-swap=8g .
    

    或在 docker run 时使用:

    代码

    docker run --memory=8g --memory-swap=8g <image>
    

    这样容器就能获得更大的可用内存。

    如果您是在 CI/CD pipeline 的共享代理上执行,则需要检查该代理的资源配额设定。 例如在 Azure DevOps,Linux/Windows Hosted Agent 预设只有 7 GB RAM,无法支援超大型 npm build。 解决方式是改用自建 Agent,并在 Agent 的 docker.service 或 Kubernetes Pod 设定中提高 resources.limits.memory

    另外,针对 npm 本身,除了 --max-old-space-size,您也可以尝试使用 npm ci 搭配 --prefer-offline,减少安装过程中的记忆体消耗。 但根本解决方案仍然是提高容器或代理的内存限制。

    总结来说,您需要在 Docker 或共享代理的层级调整内存配额,确保容器能够分配足够的 RAM。 仅修改 Node.js 的 max-old-space-size 无法解决因 cgroups 限制导致的 OOM。

    家庭暴力。

    此回答有幫助嗎?

    0 則留言 沒有留言

您的回答

答案可由問題作者標示為「已接受」,而由仲裁者標示為「推薦」,這可協助使用者知道答案解決了作者的問題。