Ubuntu 上优化 Jenkins 部署性能的可落地方案
一 环境与基础配置
- 使用受支持的 Java 版本:自 Jenkins 2.346.3 起需 JDK 11+,建议直接选用 OpenJDK 21 LTS,兼顾性能与安全。
- 选择 Ubuntu LTS(22.04/24.04) 与稳定内核,保持系统与依赖的及时更新。
- 规划资源:小型团队建议 ≥4GB 内存、≥50GB 磁盘;中大型按并发量与制品规模扩展。
- 若以 APT 安装,确保源与密钥正确,安装后再启动服务,避免“先装 Jenkins 后装 Java”导致启动失败。
- 运行模式建议:传统部署使用 systemd 托管;容器化部署使用 Docker Compose 并配置前台运行与重启策略,避免关闭终端导致容器退出。
二 JVM 与系统资源调优
- 合理设置堆内存:编辑 /etc/default/jenkins,通过 JAVA_ARGS 调整堆大小,例如将最大堆设为 4GB:
JAVA_ARGS=“-Xmx4096m”
堆过小会频繁 GC,过大则增加 GC 停顿,需结合节点内存与并发构建数逐步压测调优。
- 控制并发构建:在 Manage Jenkins → Configure System → Executors 设置与 CPU 核数、内存相匹配的 Executors 数量,避免资源争用。
- 选择现代 JDK:优先 OpenJDK 21,可获得更好的 GC 与性能表现。
- 容器场景:为 Jenkins 容器设置 内存 limits/requests,并开启 restart: always 保障稳定性。
三 构建与存储优化
- 启用 并行构建 与 分布式构建(Agent/节点):将任务分散到多台机器,显著降低主节点负载、缩短排队时间。
- 优化 SCM 检出:正确配置 Git,使用浅克隆、稀疏检出、缓存/镜像仓库,减少网络与 I/O 开销。
- 缓存依赖:为 Maven/Gradle 配置本地缓存(如 ~/.m2 或 Gradle 缓存目录挂载),避免重复下载。
- 精简构建步骤:删除不必要的复制、归档与重复测试,合并可并行的阶段。
- 定期清理:使用 Workspace Cleanup 插件或在流水线中清理工作区与临时文件,释放磁盘空间。
- 制品与日志:配置构建保留策略,归档必要产物,避免 /var/lib/jenkins 无限增长。
四 插件与监控治理
- 精简插件集:仅安装必要插件,定期清理未使用插件,优先选择性能口碑更好的插件版本。
- 持续更新:保持 Jenkins 与插件 为稳定版本,及时获得性能修复与安全补丁。
- 监控与诊断:使用 Java VisualVM/JConsole 观察堆、线程、类加载等指标;配合 Performance Plugin 定位瓶颈。
- 代理与网络:为插件/依赖下载配置 代理,提升外网不稳定环境下的拉取速度。
五 Docker 与网络部署要点
- 运行方式:使用 docker run -d 前台运行容器,或 docker-compose.yml 配置 restart: always,确保进程不被终端关闭影响。
- 端口与通信:开放 8080(Web)与 50000(Agent 通信)端口,确保防火墙与安全组放行。
- 数据持久化:将 /var/jenkins_home 挂载到持久卷,避免容器重建导致数据丢失。
- 资源限制:为容器设置 内存/CPU 限额,防止构建任务挤占宿主机资源。