温馨提示×

ubuntu jenkins怎样优化

小樊
53
2026-10-04 07:47:29
栏目: 智能运维

下面从系统层、Jenkins 本身、构建效率、资源与安全几个维度,系统性地讲一下 Ubuntu 上 Jenkins 的优化实践,适合生产环境参考。


一、系统层优化(Ubuntu)

1. 使用合适的硬件 / 云规格

  • Master 节点:CPU 4+ 核,内存 8GB+(规模大建议 16GB)
  • 构建任务:尽量交给 Agent(Slave),Master 只做调度
  • 磁盘:
    • 使用 SSD
    • 单独挂载 /var/lib/jenkins(workspace、日志、产物)
df -h /var/lib/jenkins

2. 文件描述符 & 进程数

Jenkins 并发多时会遇到:

too many open files

修改:

# /etc/security/limits.conf
jenkins soft nofile 65536
jenkins hard nofile 65536
jenkins soft nproc 4096
jenkins hard nproc 4096

3. 使用 systemd 调优

systemctl edit jenkins

示例:

[Service]
LimitNOFILE=65536
Nice=-5

二、Jenkins 自身优化

1. 使用 LTS 版本

apt-cache policy jenkins

保持 LTS,避免频繁不兼容升级。


2. JVM 参数优化(关键)

编辑:

/etc/default/jenkins
# 或
/etc/systemd/system/jenkins.service.d/override.conf

示例(8G 内存):

JAVA_OPTS="-Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCpauseMillis=200"

建议:

  • 使用 G1GC
  • 避免 PermGen 问题(JDK11+ 已无)
  • 开启 GC 日志(排查卡顿)

3. 禁用不必要的功能

  • 关闭旧构建记录
  • 关闭匿名访问
  • 禁用不用的插件

三、构建效率优化(最重要)

1. 使用 Agent / Node

不要所有任务都在 Master 上跑

  • Docker Agent
  • Kubernetes Agent(大规模推荐)
  • 静态 Agent(多台 Ubuntu)

2. 构建缓存

  • Maven:
/root/.m2/repository

挂载到 Agent 或共享存储

  • npm:
~/.npm
  • Docker layer cache

3. Pipeline 优化

✅ 推荐:

pipeline {
    agent { label 'docker' }
    stages {
        stage('Build') {
            steps {
                sh 'make build'
            }
        }
    }
}

❌ 避免:

  • 每个 step 都 checkout
  • 串行执行可并行的任务

使用:

parallel {}

4. 构建产物管理

  • 使用 Artifact Repository
    • Nexus
    • JFrog
  • 不在 Jenkins 长期存包

四、插件与维护

1. 插件原则

  • 少而精
  • 定期更新
  • 删除长期不用的插件

常用推荐:

  • Pipeline
  • Blue Ocean(可选)
  • Docker / Kubernetes
  • Credentials Binding

2. 定期清理

# 旧构建
Jenkins → 项目 → 构建保留策略

# 工作空间
# 定时清理 workspace

五、安全与稳定性

  • 启用 HTTPS
  • 使用 Role-Based Authorization
  • 使用 Credentials 管理密钥
  • 定期备份:
/var/lib/jenkins

推荐:

  • thinBackup 插件
  • 或 rsync + cron

六、监控与排障

1. 系统监控

top
htop
iostat -x 1

2. Jenkins 监控

  • 插件:Monitoring
  • 查看:
    • 队列长度
    • GC 时间
    • 构建等待时间

七、典型优化前后对比

项目 优化前 优化后
构建等待 10 min < 1 min
Master 负载 高 低
磁盘占用 爆炸 可控
稳定性 常重启 长期运行

如果你愿意,可以告诉我:

  • Jenkins 版本
  • 是否用 Docker / K8s
  • 构建语言(Java / Node / Go)
  • 当前主要问题(卡顿 / 磁盘 / 构建慢)

我可以直接给你针对性配置方案。

0 踩