在 Ubuntu 上运行 Jenkins 出现内存溢出(OOM / OutOfMemoryError),通常不是 Ubuntu 本身的问题,而是 Jenkins 进程或 JVM 配置不合理 导致的。下面按常见原因+排查方式+解决方案给你说明。
Jenkins 是 Java 应用,默认堆内存可能只有:
表现
java.lang.OutOfMemoryError: Java heap space解决 修改 Jenkins 的 JVM 参数(Ubuntu 常见路径):
sudo vim /etc/default/jenkins
# 或
sudo vim /etc/systemd/system/jenkins.service.d/override.conf
示例(8G 内存机器):
JAVA_OPTS="-Xms2g -Xmx4g -XX:MaxMetaspaceSize=512m"
然后:
sudo systemctl daemon-reload
sudo systemctl restart jenkins
Ubuntu 会直接 kill jenkins 进程,日志里可能看不到 Java OOM。
查看是否被系统杀掉
dmesg | grep -i "killed process"
journalctl -xe | grep jenkins
解决
某些插件(如:
在大量构建时会导致:
表现
OutOfMemoryError: Metaspace
解决
例如:
解决
如果 Jenkins 是用 systemd 启动的,可能有限制:
systemctl show jenkins | grep Memory
解决 在 service 文件中增加:
[Service]
MemoryLimit=6G
/var/log/jenkins/jenkins.log
dmesg
journalctl -u jenkins
free -h
top
htop
ps -ef | grep jenkins
4G 内存服务器
-Xms1g -Xmx2g
8G 内存服务器
-Xms2g -Xmx4g
16G 内存服务器
-Xms4g -Xmx8g
Ubuntu 上 Jenkins 内存溢出,90% 是 JVM 堆内存不够或系统内存被吃满,不是系统问题。
如果你愿意,可以贴:
jenkins.log 报错free -h 输出我可以帮你精准定位。