温馨提示×

CentOS怎么优化Jenkins

小樊
40
2026-07-09 08:10:46
栏目: 智能运维

CentOS 上优化 Jenkins,一般从 系统层、JVM、Jenkins 自身、插件与构建方式 几个方面入手。下面给你一套比较实用、可落地的优化方案(适用于 Jenkins 2.x,CentOS 7/8/Stream)。


一、系统层面优化(CentOS)

1️⃣ 调整文件描述符限制

Jenkins 是 IO 密集型进程,容易遇到 Too many open files

# 查看当前限制
ulimit -n

# 永久修改
vi /etc/security/limits.conf

添加:

* soft nofile 65535
* hard nofile 65535

并确认:

vi /etc/systemd/system.conf
DefaultLimitNOFILE=65535

重启后生效。


2️⃣ 关闭或优化 swap(推荐)

避免 Jenkins 频繁换页:

free -h

如果 swap 使用较多:

swapoff -a

永久关闭:

vi /etc/fstab
# 注释 swap 行

3️⃣ 调整内核参数

vi /etc/sysctl.conf

添加:

vm.swappiness = 10
net.core.somaxconn = 2048

生效:

sysctl -p

二、Jenkins JVM 参数优化(非常重要)

1️⃣ 修改 Jenkins JVM 内存

编辑 Jenkins 启动参数:

vi /etc/sysconfig/jenkins

重点参数:

JENKINS_JAVA_OPTIONS="-Xms2g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200"

建议:

内存 推荐
小项目 2G / 4G
中大型 4G / 8G
超大型 8G+

推荐使用 G1 GC(JDK8+)


2️⃣ 如果是 systemd 启动

systemctl edit jenkins

添加:

[Service]
Environment="JAVA_OPTS=-Xms2g -Xmx4g -XX:+UseG1GC"

三、Jenkins 自身配置优化

1️⃣ 控制构建并发数

不要无限制并发

路径:

Jenkins → 系统管理 → 系统配置
  • 执行器数量:
    • 单节点:CPU 核数 × 1~2
    • 不建议超过 4~6

2️⃣ 使用 Agent(节点) 而不是单 Master

❌ 不推荐:

  • Master 既跑 UI 又跑构建

✅ 推荐:

  • Master 只负责调度
  • 构建任务交给 Agent

方式:

  • SSH Agent
  • Docker Agent
  • Kubernetes Agent(最佳)

3️⃣ 禁用不必要的定时任务

Jenkins → 系统管理 → 系统信息

关闭:

  • SCM 轮询(改用 Webhook)
  • 不必要的定时 job

四、插件与 Job 优化

1️⃣ 精简插件

路径:

系统管理 → 插件管理 → 已安装

删除:

  • 不用的插件
  • 重复功能插件

插件过多会导致:

  • 启动慢
  • 内存泄漏

2️⃣ 使用 Pipeline 而不是 Freestyle

✅ Pipeline 优势:

  • 可复用
  • 可重启
  • 资源占用更可控

示例:

pipeline {
    agent any
    options {
        timeout(time: 30, unit: 'MINUTES')
    }
    stages {
        stage('Build') {
            steps {
                sh 'make'
            }
        }
    }
}

3️⃣ 控制构建历史

每个 Job 配置:

丢弃旧的构建
  • 保留天数:7~30
  • 保留数量:10~20

五、磁盘与日志优化

1️⃣ 使用 SSD

Jenkins 对磁盘 IO 非常敏感。


2️⃣ 定期清理 workspace

方式一:Job 内

post {
    always {
        cleanWs()
    }
}

方式二:全局

find /var/lib/jenkins/workspace -type d -mtime +7 | xargs rm -rf

3️⃣ 限制 Jenkins 日志大小

vi /etc/logrotate.d/jenkins

示例:

/var/log/jenkins/jenkins.log {
    size 100M
    rotate 5
    compress
    missingok
}

六、监控与排障

1️⃣ 监控指标

  • CPU
  • 内存
  • GC
  • 构建队列长度

工具:

  • Prometheus + Grafana
  • Jenkins Metrics Plugin

2️⃣ 查看 GC 情况

jstat -gcutil <pid> 1000

频繁 Full GC 说明内存不足。


七、推荐配置总结(示例)

项目 推荐
OS CentOS 7/8
内存 ≥ 8GB
JVM G1 GC
Master 不跑构建
Agent Docker / K8s
并发 ≤ CPU × 2
磁盘 SSD

八、如果你愿意,我可以帮你:

  • ✅ 针对 你的服务器配置 给出 JVM 参数
  • ✅ 分析 Jenkins 卡顿 / 内存溢出
  • ✅ 给你一套 K8s + Jenkins 优化方案
  • ✅ 排查 构建慢 / 队列堆积

你可以直接贴:

  • 服务器配置(CPU / 内存)
  • Jenkins 版本
  • 是否使用 Docker / K8s

0