在 Debian 上优化 Jenkins,通常可以从 系统资源、JVM、Jenkins 配置、插件与任务设计、网络与安全 等方面入手。下面给你一套比较完整、可落地的优化方案(适合中大型 Jenkins 实例)。
cat /etc/debian_version
编辑:
sudo vim /etc/security/limits.conf
添加:
jenkins soft nofile 65536
jenkins hard nofile 65536
jenkins soft nproc 4096
jenkins hard nproc 4096
检查 systemd 是否生效:
systemctl show jenkins | grep LimitNOFILE
sudo vim /etc/sysctl.conf
常用优化:
vm.swappiness=10
net.core.somaxconn=4096
生效:
sudo sysctl -p
systemctl status jenkins
编辑:
sudo vim /etc/systemd/system/jenkins.service.d/override.conf
示例(8G 内存服务器):
[Service]
Environment="JAVA_OPTS=-Xms2g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+ParallelRefProcEnabled -Djava.awt.headless=true"
说明:
-Xms / -Xmx:避免频繁 GCG1GC:适合 Jenkinsheadless:无 GUI重新加载:
sudo systemctl daemon-reload
sudo systemctl restart jenkins
ps -ef | grep jenkins
每个 Job:
推荐:
系统管理 → 全局安全
系统管理 → 插件管理
❌ 不要在 Master 上跑构建
✅ Master 只负责调度
Master(Debian)
├── Agent1(Docker / VM)
├── Agent2
建议:
sudo systemctl stop jenkins
rm -rf /var/lib/jenkins/plugins/xxx
✅ 使用 Declarative Pipeline
✅ 减少 sh """ 嵌套
✅ 不要在 Pipeline 中 sleep
✅ 使用 stash / unstash 而不是大文件传递
示例:
pipeline {
agent { label 'linux' }
options {
timeout(time: 30, unit: 'MINUTES')
disableConcurrentBuilds()
}
stages {
stage('Build') {
steps {
sh 'make'
}
}
}
}
Jenkins 对磁盘 IO 非常敏感:
$JENKINS_HOME/var/lib/jenkins # 配置
/var/lib/jenkins/workspace # 构建
/var/cache/jenkins # 缓存
可以在 jenkins.service 中指定环境变量。
find /var/lib/jenkins/workspace -type d -mtime +7 -exec rm -rf {} \;
如果你在 Debian 上用 Docker:
docker run -d \
--name jenkins \
-p 8080:8080 \
-v jenkins_home:/var/jenkins_home \
jenkins/jenkins:lts
优点:
| 问题 | 原因 | 解决 |
|---|---|---|
| Jenkins 启动慢 | 插件多 | 卸载无用插件 |
| 构建卡住 | Master 跑任务 | 使用 Agent |
| 内存暴涨 | JVM 未限制 | 设置 Xmx |
| 磁盘爆满 | 构建历史多 | 自动清理 |
| 页面卡顿 | 插件/日志 | 禁用旧插件 |
JAVA_OPTS=-Xms2g -Xmx4g -XX:+UseG1GC
构建历史:15
Master:不跑构建
Agent:2+
磁盘:SSD
如果你愿意,可以告诉我:
我可以帮你 定制一套 Jenkins 优化方案。