在 Ubuntu 上运行 Jenkins 时出现“内存不足(Out of Memory,OOM)”,通常不是单一原因,而是多个因素叠加。下面按最常见原因 → 排查方法 → 解决建议说明。
Jenkins 默认使用 Java,若 -Xmx 设置过大,或没限制:
典型表现
dmesg 中有 Out of memory: Kill process (java)尤其是:
每个构建都会起子进程,内存叠加。
常见场景:
Ubuntu 默认:
dmesg | grep -i "out of memory"
或
journalctl -k | grep -i oom
ps aux | grep jenkins
看是否有:
-Xmx2g -Xms1g
配置文件一般在:
/etc/default/jenkins
# 或
/etc/systemd/system/jenkins.service
free -h
top
htop
swapon --show
如果为空 → 没有 Swap
编辑:
sudo nano /etc/default/jenkins
示例(2G 内存服务器):
JAVA_OPTS="-Xms512m -Xmx1024m"
然后:
sudo systemctl restart jenkins
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
开机自动挂载:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
docker run -m 1g jenkins/jenkins
| 场景 | 内存 |
|---|---|
| 学习 / 测试 | 2G + Swap |
| 小型团队 | 4G |
| 多 Job / Docker | 8G+ |
你可以贴出:
free -h 输出我可以精确告诉你该改哪一项。