温馨提示×

ubuntu jenkins为何内存不足

小樊
39
2026-09-19 11:00:47
栏目: 智能运维

Ubuntu 上运行 Jenkins 时出现“内存不足(Out of Memory,OOM)”,通常不是单一原因,而是多个因素叠加。下面按最常见原因 → 排查方法 → 解决建议说明。


一、最常见原因

1. Jenkins 自身堆内存设置过大或不合理

Jenkins 默认使用 Java,若 -Xmx 设置过大,或没限制:

  • 系统内存被 Java 堆吃光
  • 触发 Linux OOM Killer

典型表现

  • dmesg 中有 Out of memory: Kill process (java)
  • Jenkins 进程突然消失

2. 构建任务(Job)占用大量内存

尤其是:

  • Maven / Gradle 构建
  • Docker 构建
  • Node.js / 前端构建
  • 并行执行多个 Job

每个构建都会起子进程,内存叠加。


3. Ubuntu 系统内存本身较小

常见场景:

  • 云服务器 1G / 2G 内存
  • 同时运行:
    • Jenkins
    • MySQL
    • Docker
    • Nginx

4. Jenkins 插件过多

  • 旧插件
  • 监控类插件(如 Monitoring)
  • 每次构建加载大量类

5. 没有配置 Swap

Ubuntu 默认:

  • 云镜像经常 没有 swap
  • 内存一满直接 OOM

6. 僵尸进程 / 内存泄漏

  • 构建异常退出
  • Docker 容器未清理
  • Git / Shell 子进程残留

二、如何快速排查

1️⃣ 查看是不是 OOM 被杀

dmesg | grep -i "out of memory"

journalctl -k | grep -i oom

2️⃣ 查看 Jenkins 内存配置

ps aux | grep jenkins

看是否有:

-Xmx2g -Xms1g

配置文件一般在:

/etc/default/jenkins
# 或
/etc/systemd/system/jenkins.service

3️⃣ 查看内存使用情况

free -h
top
htop

4️⃣ 查看 Swap

swapon --show

如果为空 → 没有 Swap


三、解决方案(推荐)

✅ 1. 合理设置 Jenkins 内存

编辑:

sudo nano /etc/default/jenkins

示例(2G 内存服务器):

JAVA_OPTS="-Xms512m -Xmx1024m"

然后:

sudo systemctl restart jenkins

✅ 2. 添加 Swap(强烈推荐)

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

✅ 3. 限制构建并发数

  • Jenkins → 系统管理 → 节点管理
  • 设置 Executor 数量 = CPU 核数或更小

✅ 4. 清理无用插件

  • 禁用不用的插件
  • 删除旧 Job
  • 定期重启 Jenkins

✅ 5. 使用 Docker 时限制内存

docker run -m 1g jenkins/jenkins

四、最小推荐配置(经验值)

场景 内存
学习 / 测试 2G + Swap
小型团队 4G
多 Job / Docker 8G+

五、如果你愿意

你可以贴出:

  • free -h 输出
  • Jenkins 启动参数
  • 是否用 Docker
  • 报错日志

我可以精确告诉你该改哪一项

0