Jenkins内置节点内存限制问题:Docker环境下构建create-react-app失败
Jenkins容器中React项目构建卡死问题排查方案
问题概况
- 特权模式Docker容器运行Jenkins实例,已稳定运行1年
- 基于create-react-app+MUI的项目构建异常:
npm install可正常完成,但执行npm run build时系统完全卡死 - 调整JVM堆内存至4GB(配置
JAVA_OPTS、MAVEN_OPTS并在内置节点生效)后,仅能触发构建取消操作,仍无法完成构建 - 系统显示可用内存为4GB,但构建过程中内存使用率从未超过约200MB,怀疑内置节点进程被限制为200MB
- 已尝试在构建命令中添加
--max-old-space=768,无效果

排查与解决步骤
1. 配置Node.js进程内存限制
进入Manage Jenkins -> Manage Nodes and Clouds -> Built-In Node -> Configure,在Node Properties模块添加环境变量:
NODE_OPTIONS=--max-old-space-size=2048
(给Node.js进程分配2GB内存,覆盖默认内存限制)
2. 检查Docker容器资源限制
执行以下命令查看Jenkins容器的内存上限:
docker inspect <jenkins容器ID> | grep -i memory
若发现内存限制值远低于4GB,重启容器时指定内存参数:
docker run -d --privileged --memory=8g --memory-swap=8g <jenkins镜像名>
(根据主机实际可用内存调整,建议分配4GB以上)
3. 设置Jenkins全局环境变量
进入Manage Jenkins -> Configure System -> Global properties,勾选Environment variables,添加:
NODE_OPTIONS=--max-old-space-size=2048
确保所有构建任务都能继承该内存配置。
4. 直接在构建命令中指定内存
若上述配置无效,修改构建步骤的命令为:
NODE_OPTIONS=--max-old-space-size=2048 npm run build
5. 排查构建日志细节
开启Jenkins构建的Console Output详细日志,检查npm run build执行过程中是否存在隐藏错误(如文件权限问题、依赖冲突),部分卡死现象实际由非内存问题引发。
内容的提问来源于stack exchange,提问作者Matthew Mangan
相关产品推荐
相关产品推荐

