Linux上优化 Jenkins 性能的可落地清单
一 硬件与系统层优化
- 资源基线:生产环境建议至少4核CPU + 8GB内存,更优为8核16GB+;构建日志与制品对磁盘敏感,优先使用SSD/NVMe以降低I/O瓶颈。
- 存储布局:将JENKINS_HOME指向更大容量的磁盘分区(如独立数据盘),避免系统盘被构建产物撑满。
- 网络栈:在具备高带宽/高丢包或跨地域场景,启用TCP BBR拥塞控制以优化吞吐与延迟(网络密集型场景收益明显)。
二 JVM与运行参数调优
- 堆与元空间:设置合理的初始/最大堆(-Xms/-Xmx),避免频繁GC或OOM;Jenkins 2.7+ 使用Metaspace替代PermGen,无需再设置-XX:PermSize/MaxPermSize。
- 典型配置示例(按实际内存调整):
- Debian/Ubuntu(编辑**/etc/default/jenkins**):JAVA_ARGS=“-Xms2g -Xmx2g -Djava.awt.headless=true”
- CentOS/RHEL(编辑**/etc/sysconfig/jenkins**):JENKINS_JAVA_OPTIONS=“-Xms2g -Xmx2g -Djava.awt.headless=true”
- 建议将**-Xms与-Xmx**设为相同值以减少堆伸缩带来的抖动;仅在明确收益时再添加更复杂的GC参数。
三 Jenkins内部配置优化
- 并发与负载:在“Manage Jenkins → Nodes → Configure Global Security/Cloud”中限制全局并发构建数,避免单机过载;将耗时/资源密集任务放到代理执行。
- 主节点减负:尽量让主节点只做调度与轻量任务,把构建放到Agent/Slave;必要时横向扩展多个代理节点,形成主从架构。
- 插件与构建:精简插件(禁用/卸载未使用或低价值插件),减少启动与运行期开销;在流水线中合理使用并行阶段与依赖缓存(如Maven/NPM/Go模块),缩短构建时长。
四 存储与日志治理
- 构建保留策略:在任务配置中设置天数/次数保留上限,定期清理历史构建与制品,释放磁盘并加速视图查询。
- 日志轮转:使用logrotate管理jenkins.log,避免单日志过大(示例:按日轮转、保留7天、压缩):
/etc/logrotate.d/jenkins { daily rotate 7 compress missingok notifempty create 0644 root adm sharedscripts postrotate if [ -f /var/run/jenkins/jenkins.pid ]; then kill -HUP $(cat /var/run/jenkins/jenkins.pid); fi endscript }
- 目录与磁盘:监控**/var/lib/jenkins与/var/log/jenkins**增长,必要时迁移JENKINS_HOME至更大磁盘。
五 监控与持续优化
- 资源监控:在服务器侧使用htop/glances/btop观察CPU、内存、I/O与网络;在Jenkins侧可结合Prometheus + Grafana采集JVM与应用指标,设置告警。
- 例行维护:定期更新Jenkins与插件获取性能修复与安全补丁;结合监控数据滚动调整并发数、堆大小与保留策略,形成闭环优化。