CentOS 上部署 Jenkins 的性能优化要点
一 硬件与系统层优化
- 资源基线:生产环境建议至少4 核 CPU + 8GB 内存,更优为8 核 16GB+,以承载 Jenkins 主进程、构建代理与并发任务。
- 存储优先:使用SSD/NVMe降低构建日志、工作空间与制品的 I/O 瓶颈。
- 网络质量:保证与代码仓、制品库、部署目标之间的高带宽与低时延连接。
- 内核网络参数(示例,需结合压测微调):提高套接字缓冲与连接队列能力
- net.core.rmem_max、net.core.wmem_max:增大收发缓冲区
- net.core.somaxconn:提升并发连接队列长度
- 可选:启用 net.ipv4.tcp_tw_reuse 以加速回收 TIME_WAIT 连接(注意与业务兼容)
- 监控告警:部署Prometheus + Grafana或同类方案,持续观测 CPU、内存、磁盘 I/O、网络、JVM 等指标并设定阈值告警。
二 JVM 与容器内存配置
- 堆大小设置:在 /etc/sysconfig/jenkins 或 /etc/default/jenkins 中配置 JAVA_OPTS/JENKINS_JAVA_OPTIONS,建议将 -Xms 与 -Xmx 设为相同值,避免运行期扩缩堆带来的抖动;例如:
- JAVA_OPTS=“-Xms4g -Xmx4g -Djava.awt.headless=true”
- 代际与线程:合理设置年轻代(如 -Xmn,常取堆的1/3~1/4),并按需调整线程栈(-Xss)。
- 容器场景:若以 Docker 运行,需同时限制容器内存(如 –memory=4g)与设置容器内 JAVA_ARGS,避免容器 OOM 或 JVM 无法识别可用内存。
- 验证方式:在 Jenkins 管理界面「系统信息」查看 Java Options 是否生效。
三 Jenkins 配置与任务层优化
- 并发控制:在「全局工具配置」中设置合理的执行器数量与并发构建数,与 CPU、内存、I/O 能力匹配,避免资源争用。
- 插件治理:仅保留必要插件,定期更新并移除未使用插件,降低启动时间与常驻内存占用。
- 构建分布:启用分布式构建/Agent 节点,将耗时任务卸载到从节点,减轻 Master 压力。
- 构建优化:
- 使用构建缓存(如依赖缓存、Docker 层缓存)减少重复工作;
- 优化流水线,减少不必要的步骤与冗余操作;
- 对大仓库适当延长 Git Clone 超时,避免偶发失败。
- 历史数据:配置保留策略,定期清理旧构建与日志,释放磁盘并缩短查询时间。
四 监控与持续优化
- 运行期观测:使用 Java VisualVM/JConsole 观察堆使用、GC 行为、线程与类加载等指标,据此微调 -Xms/-Xmx/-Xmn 等参数。
- 平台监控:通过 Prometheus/Grafana 或性能插件建立可视化看板与阈值告警,覆盖节点资源、JVM、构建队列、磁盘与网络。
- 持续评估:随业务增长定期复盘并发数、插件清单、缓存命中率、磁盘 I/O等关键指标,滚动优化。
五 快速检查清单
| 优化项 |
建议值或做法 |
验证方式 |
| CPU/内存 |
≥4C/8GB,推荐 8C/16GB+ |
系统监控、负载曲线 |
| 存储 |
SSD/NVMe |
iostat、构建耗时 |
| JVM 堆 |
-Xms=-Xmx(如 4g),必要时设 -Xmn |
管理界面「系统信息」 |
| 并发构建 |
与 CPU/内存/I/O 匹配 |
构建队列、节点负载 |
| 插件 |
精简并定期更新 |
启动时间、常驻内存 |
| 构建分布 |
启用 Agent/分布式 |
Master 负载下降 |
| 历史数据 |
配置保留策略并清理 |
磁盘使用、查询性能 |
| 监控告警 |
Prometheus + Grafana |
指标看板、阈值告警 |