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

TeamCity与Jenkins中yarn install耗尽服务器CPU内存无法完成,求助原因

解决TeamCity/Jenkins中Yarn Install耗尽CPU内存的问题

我之前在Windows Server的CI环境里碰到过完全一样的情况——手动命令行跑yarn install秒完成,放到TeamCity/Jenkins里就直接把2核4G的机器资源占满,永远跑不完。后来排查出几个核心原因,你可以按顺序试试:

1. 优先排查Yarn版本兼容性

旧版本的Yarn 1.x(比如1.15.x及更早)在Windows CI环境下有并发调度的bug,尤其是资源有限的机器上,会无限制创建子进程导致CPU和内存被榨干。

  • 解决办法:升级到Yarn 1.x的稳定版本(比如1.22.19),或者直接切换到Yarn Berry(2.x+),后者对资源的管理更高效。
  • CI脚本里可以先指定版本安装:
    npm install -g yarn@1.22.19
    yarn install
    

2. 限制Yarn的并发数

默认情况下Yarn会根据CPU核心数设置并发下载/安装的进程数,但2核的机器可能扛不住默认的并发量,尤其是CI环境本身还有其他进程在跑。

  • 直接在CI的yarn install命令里加参数限制并发:
    yarn install --network-concurrency 1 --non-interactive
    
    --network-concurrency 1强制单线程下载,--non-interactive避免CI环境下弹出交互提示。

3. 检查CI环境的用户权限与缓存路径

TeamCity/Jenkins的运行用户和你手动登录的用户权限、环境变量不一样,可能导致Yarn缓存目录无法正常读写,进而触发重复下载或异常进程。

  • 显式指定一个有读写权限的缓存目录:
    yarn config set cache-folder C:\CI-Yarn-Cache
    yarn install
    
    确保这个目录是CI运行用户能访问的,并且提前创建好。

4. 切换CI的执行环境

有些CI工具默认用PowerShell执行脚本,而Yarn在PowerShell环境下可能有额外的进程开销或兼容性问题。试试强制用CMD执行:

  • TeamCity:选择「Command Line」runner,命令写cmd /c yarn install --non-interactive --network-concurrency 1
  • Jenkins:用bat 'yarn install --non-interactive --network-concurrency 1'代替PowerShell脚本

5. 排查依赖的postinstall脚本

少数依赖包的postinstall脚本在CI环境下会触发无限循环或大量计算,但本地环境因为某些差异没触发。可以先禁用脚本排查:

yarn install --ignore-scripts

如果这个命令能正常完成,就逐个排查项目依赖里带postinstall的包,找到问题包后替换或调整配置。

验证步骤

先尝试最直接的yarn install --non-interactive --network-concurrency 1,如果能正常完成,再逐步调整并发数(比如改成2)或者升级Yarn版本,找到适合你机器的配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:47:05