在 CentOS 上优化 Jenkins 性能,需要从 系统资源、JVM、Jenkins 配置、插件、构建方式、存储与网络 等多个层面综合考虑。下面给你一套比较完整、可落地的优化方案。
编辑 /etc/security/limits.conf:
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
Jenkins 并发构建多时,文件句柄和线程数很容易成为瓶颈。
swapoff -a
如果一定要 swap,降低使用倾向:
echo vm.swappiness=10 >> /etc/sysctl.conf
sysctl -p
cat >> /etc/sysctl.conf <<EOF
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
vm.max_map_count = 262144
EOF
sysctl -p
编辑:
vim /etc/sysconfig/jenkins
调整:
JENKINS_JAVA_OPTIONS="-Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
推荐配置:
-Xms2g -Xmx2g-Xms4g -Xmx8g使用 G1 GC 对 Jenkins 这种长期运行的服务更稳定
监控 GC:
jstat -gcutil <pid> 1000
Manage Jenkins → Nodes
Master → Configure
# of executors = 0
Manage Jenkins → Plugins → Installed
❌ 不推荐:
node {
stage('Build') {
sh 'make'
}
}
✅ 推荐:
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'make'
}
}
}
}
checkout scm
避免在每个 stage 都 checkout。
stash / unstash 替代重复构建stash name: 'dist', includes: 'dist/**'
Jenkins 对磁盘 IO 非常敏感:
$JENKINS_HOMEJob → Configure → Discard old builds
du -sh /var/lib/jenkins/*
重点清理:
jobs/*/buildsworkspacelogsmvn -Dmaven.repo.local=/data/maven-repo
docker build --cache-from
| 问题 | 原因 | 解决 |
|---|---|---|
| Jenkins 卡顿 | Master 执行构建 | 禁用 Master 执行器 |
| 启动慢 | 插件多 | 删除无用插件 |
| 构建慢 | IO 差 | 使用 SSD |
| 内存溢出 | JVM 配置低 | 增加 Xmx |
| 队列堆积 | 并发低 | 增加 Agent |
OS: CentOS 7/8
CPU: ≥ 4 核
Memory: ≥ 8G
JVM: -Xms4g -Xmx4g -XX:+UseG1GC
Master: 不执行构建
Agent: 每个 Agent 2~4 执行器
存储: SSD
如果你愿意,我可以:
你可以直接贴出: