提升 CentOS 上 Jenkins 构建速度的可落地方案
一 硬件与系统层优化
- 优先使用SSD与充足内存,构建与日志写入频繁时 I/O 往往是瓶颈;计算密集任务建议多核 CPU。
- 基线配置建议:至少4 核 CPU + 8GB 内存;更优为8 核 16GB+,并持续评估负载与扩容。
- 保持系统与依赖更新,减少因内核/库导致的异常抖动。
二 Jenkins 主节点与 JVM 调优
- 控制堆大小:将 Jenkins 主节点最大堆设置为4GB起步(如:JAVA_ARGS=“-Xmx4096m”),避免过大导致 GC 停顿或过小触发 OOM。
- 限制并发构建:在“Manage Jenkins → Configure System”将**# of executors设置为不超过CPU 物理核心数**,避免资源争用。
- 减轻主节点负载:主节点只做调度与轻量任务,尽量把耗时/重任务放到 Agent;必要时配置多个 Master以隔离团队与插件。
- 精简插件:只保留必要插件,定期清理未使用插件,降低启动与运行期内存占用。
- 清理历史数据:在作业配置启用Discard Old Builds,定期删除旧构建与制品,释放磁盘并加快查询。
- 可选 GC 优化:Java 8 场景可考虑G1 GC以降低停顿时间。
三 构建流程与 Pipeline 优化
- 使用 Pipeline 的parallel拆分可并行阶段(如:单元/集成/前端/后端并行),显著缩短端到端时间。
- 避免在主节点执行复杂 Groovy(如 JsonSlurper、Jenkins.getInstance、HttpRequest 等),以免抢占主节点 CPU/内存。
- 拆分长时间构建为多个小阶段,减少排队与失败回滚成本。
- 并行任务加锁防冲突:对共享资源(如数据库端口5432、缓存目录)使用Throttle Concurrent Builds或资源锁,避免端口/文件争用导致失败与重试。
四 分布式构建与 Agent 扩展
- 配置多 Agent 节点(物理机/虚拟机/容器),按标签(如 linux、docker、gpu)分发任务,主节点专注调度。
- 为 Agent 准备标准化镜像/模板,便于快速扩容与替换;结合标签实现按资源类型调度。
- 在作业中使用“Restrict where this project can be run”或节点标签,将重任务定向到专用 Agent。
五 系统级网络与监控
- 适度优化内核网络参数以提升高并发下的稳定性与吞吐:
- 提高网络缓冲区:net.core.rmem_max / net.core.wmem_max
- 增加连接队列:net.core.somaxconn
- 加速回收 time_wait:net.ipv4.tcp_tw_reuse(生产环境谨慎启用回收类选项)
- 监控与持续调优:使用Java VisualVM / JConsole观察堆与 GC 行为,配合Performance Plugin等监控插件,依据指标迭代并发度、堆大小与节点规模。