
Jenkins 构建 Node 项目内存溢出(JavaScript heap out of memory)解决方案
1\. 问题描述 在 Jenkins CI/CD 构建前端项目(Vue / Vite / Webpack 等)时,执行: 报错: 即 Node.js 在运行时超出了默认 V8 引擎
中的job在打包时,总是提示Too many open files,通常是因为系统中允许打开的文件句柄数量超过了限制。要解决这个问题,您可以按照以下步骤增加系统和 Jenkins 允许的最大文件数:
您可以使用以下命令查看当前系统中每个用户允许打开的文件数:
ulimit -n
您可以使用以下命令临时增加最大文件数限制(例如设置为 65535):
ulimit -n 65535
此更改仅在当前会话中有效。如果重新启动系统或 Jenkins 服务,此设置会恢复。
要永久增加文件句柄限制,可以修改系统配置文件:
/etc/security/limits.conf编辑文件 /etc/security/limits.conf,添加以下内容:
* soft nofile 65535 * hard nofile 65535
这将为所有用户设置文件句柄限制为 65535。您可以根据需要调整值。
/etc/sysctl.conf为系统全局设置文件句柄限制,编辑文件 /etc/sysctl.conf,添加以下内容:
fs.file-max = 65535
然后执行以下命令使配置生效:
sudo sysctl -p
如果 Jenkins 通过 systemd 启动,您还需要修改其服务配置:先看一下jenkins的进行
[root@wulaoer.org ~]# ps -ef | grep java root 18226 1 99 11:33 ? 00:00:24 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=%C/jenkins/war --httpPort=8080 root 18316 1545 0 11:34 pts/0 00:00:00 grep --color=auto java [root@wulaoer.org ~]# cat /proc/18226/limits Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file size unlimited unlimited bytes Max data size unlimited unlimited bytes Max stack size 8388608 unlimited bytes Max core file size 0 unlimited bytes Max resident set unlimited unlimited bytes Max processes 15072 15072 processes Max open files 4096 4096 files Max locked memory 65536 65536 bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 15072 15072 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us
编辑 Jenkins 的 systemd 服务文件,通常位于 /etc/systemd/system/jenkins.service。在 [Service] 部分添加以下内容:
LimitNOFILE=65535
执行以下命令重新加载 systemd 配置,并重启 Jenkins:
sudo systemctl daemon-reload sudo systemctl restart jenkins
重启后查看一下jenkins的进程信息
[root@wulaoer.org ~]# cat /proc/18495/limits Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file size unlimited unlimited bytes Max data size unlimited unlimited bytes Max stack size 8388608 unlimited bytes Max core file size 0 unlimited bytes Max resident set unlimited unlimited bytes Max processes 15072 15072 processes Max open files 65535 65535 files Max locked memory 65536 65536 bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 15072 15072 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us
重启系统或者 Jenkins 后,新的文件句柄限制将生效。如果问题依旧存在,您可以检查 Jenkins 日志,确保设置已成功应用。
评论 0