Ubuntu 上 Jenkins 资源管理实用指南
一 资源规划与基线
- 建议为 Jenkins 规划合理的 CPU、内存与磁盘,并按环境分层配置:
- 最小可用:1 核 CPU / 512MB 内存 / 1GB 存储
- 推荐:≥2 核 CPU / ≥4GB 内存 / ≥50GB SSD
- 生产:≥4 核 CPU / ≥8GB 内存 / ≥100GB SSD
- 端口与连通性:
- Web 界面:8080/tcp
- Agent 连接:50000/tcp
- 防火墙放行示例(UFW):
sudo ufw allow 8080/tcp 与 sudo ufw allow 50000/tcp
- 若采用容器化或云上形态,可参考常见规格:Master 4C/4Gi、Agent 0.5C/1Gi 起步,并按并发量扩展。
二 控制 Jenkins Master 资源
- 调整 JVM 堆内存(Ubuntu 包安装常用方式)
- 编辑配置文件:
sudo vim /etc/default/jenkins
- 设置堆上限(示例为 4GB):
JAVA_ARGS="-Xmx4096m"
- 使配置生效:
sudo systemctl restart jenkins
- 验证:
ps aux | grep jenkins 应能看到 -Xmx 参数
- 仅安装必要插件、定期清理工作区与构建历史,减少 Master 内存与磁盘压力。
三 控制构建并发与分布式执行
- 限制 Master 并发执行器数量
- 路径:Manage Jenkins → Configure System → Executors
- 依据 CPU 核数与内存,合理设置并发数,避免资源争用
- 使用构建代理(Agent)分担负载
- 通过 Docker 或 Kubernetes 动态/静态扩展 Agent,Master 专注调度与管理
- 在 Kubernetes 中可结合弹性 Agent 与集群资源配额,按队列与负载自动扩缩。
四 Docker 与容器场景的资源限制
- Docker Compose 示例(对 Jenkins 容器施加速率与内存上限)
- 如需在容器内使用宿主 Docker(挂载
/var/run/docker.sock),务必配合容器资源限制,避免构建任务无约束占用宿主机。
五 监控与持续优化
- 建立监控与告警
- 使用 Java VisualVM、JConsole 观察堆内存、线程、类加载等指标
- 结合系统监控(如
top、htop、vmstat)与日志(/var/log/jenkins/jenkins.log)定位瓶颈
- 持续优化实践
- 控制并发构建数、精简插件、定期清理工作区与旧构建
- 升级到 最新稳定版 Jenkins 与受维护插件,获取性能修复与安全改进。