温馨提示×

centos如何优化jenkins性能

小樊
34
2026-08-30 19:57:25
栏目: 智能运维

CentOS 上优化 Jenkins 性能,需要从 系统资源、JVM、Jenkins 配置、插件、构建方式、存储与网络 等多个层面综合考虑。下面给你一套比较完整、可落地的优化方案。


一、操作系统层面(CentOS)

1. 调整系统资源限制

编辑 /etc/security/limits.conf

* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

Jenkins 并发构建多时,文件句柄和线程数很容易成为瓶颈。


2. 关闭或调整 swap(服务器内存充足时)

swapoff -a

如果一定要 swap,降低使用倾向:

echo vm.swappiness=10 >> /etc/sysctl.conf
sysctl -p

3. 调整内核参数

cat >> /etc/sysctl.conf <<EOF
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
vm.max_map_count = 262144
EOF
sysctl -p

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

1. 修改 Jenkins JVM 参数(CentOS)

编辑:

vim /etc/sysconfig/jenkins

调整:

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

推荐配置:

  • 小实例:-Xms2g -Xmx2g
  • 中大型:-Xms4g -Xmx8g
  • 不建议超过物理内存的 50%

使用 G1 GC 对 Jenkins 这种长期运行的服务更稳定


2. 避免频繁 Full GC

监控 GC:

jstat -gcutil <pid> 1000

三、Jenkins 配置优化

1. 限制并发构建数量

  • 系统设置 → 执行器数量
    • Master 节点建议:2~4
    • 构建任务尽量交给 Agent

2. 禁止 Master 执行构建(强烈推荐)

Manage Jenkins → Nodes
Master → Configure
# of executors = 0

3. 使用 Agent(非常重要)

  • 使用 Linux Agent / Docker Agent
  • 避免 Master 被构建任务拖垮

四、插件优化(常被忽视)

1. 删除无用插件

Manage Jenkins → Plugins → Installed
  • 禁用 / 卸载不用的插件
  • 插件越多,启动越慢,内存占用越高

2. 避免“重量级插件”

  • 大量 Job DSL
  • 复杂 Pipeline 共享库
  • 老旧的 UI 插件

五、Pipeline 性能优化

1. 正确写 Jenkinsfile

❌ 不推荐:

node {
    stage('Build') {
        sh 'make'
    }
}

✅ 推荐:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'make'
            }
        }
    }
}

2. 减少 checkout 次数

checkout scm

避免在每个 stage 都 checkout。


3. 使用 stash / unstash 替代重复构建

stash name: 'dist', includes: 'dist/**'

六、存储与磁盘 IO 优化(非常关键)

1. 使用 SSD

Jenkins 对磁盘 IO 非常敏感:

  • $JENKINS_HOME
  • 构建产物
  • 日志

2. 调整构建产物策略

  • 不要保留大量历史构建
  • 只保留最近 N 次
Job → Configure → Discard old builds

3. 定期清理 Jenkins Home

du -sh /var/lib/jenkins/*

重点清理:

  • jobs/*/builds
  • workspace
  • logs

七、构建缓存优化

1. 使用构建缓存

  • Maven:
mvn -Dmaven.repo.local=/data/maven-repo
  • Docker:
docker build --cache-from

2. 使用本地或私有仓库

  • Nexus
  • Harbor
  • 私有 yum / apt

八、监控 Jenkins 性能

1. 安装监控插件

  • Monitoring(JavaMelody)
  • Prometheus + Grafana
  • Build Queue

2. 关键指标

  • CPU / 内存
  • GC 时间
  • 构建队列长度
  • Master 是否执行构建

九、常见 Jenkins 性能问题速查表

问题 原因 解决
Jenkins 卡顿 Master 执行构建 禁用 Master 执行器
启动慢 插件多 删除无用插件
构建慢 IO 差 使用 SSD
内存溢出 JVM 配置低 增加 Xmx
队列堆积 并发低 增加 Agent

十、推荐的 Jenkins 高性能源配置示例

OS: CentOS 7/8
CPU: ≥ 4 核
Memory: ≥ 8G
JVM: -Xms4g -Xmx4g -XX:+UseG1GC
Master: 不执行构建
Agent: 每个 Agent 2~4 执行器
存储: SSD

如果你愿意,我可以:

  • ✅ 帮你 分析现有 Jenkins 性能瓶颈
  • ✅ 给你 一份 Jenkinsfile 优化示例
  • ✅ 针对 Docker / Kubernetes Jenkins 给出专项优化

你可以直接贴出:

  • Jenkins 版本
  • 构建规模(多少 Job / 并发)
  • 服务器配置

0