温馨提示×

jenkins centos如何优化

小樊
45
2026-09-30 10:34:33
栏目: 智能运维

在 CentOS 上优化 Jenkins,通常可以从系统层面、Jenkins 配置、插件与任务设计、资源监控几个方面来做。下面给你一份比较实用的优化清单(适用于 CentOS 7/8 以及 Jenkins 长期支持版)。


一、系统层面优化(CentOS)

1. 使用合适的内核参数

编辑 /etc/sysctl.conf:

vm.swappiness = 10
net.core.somaxconn = 1024

执行:

sysctl -p

2. 调整文件描述符限制

Jenkins 会开很多连接(agent、git、http)。

编辑 /etc/security/limits.conf:

jenkins soft nofile 65536
jenkins hard nofile 65536

3. 使用 SSD / 高性能磁盘

Jenkins 对磁盘 IO 敏感(workspace、构建日志、artifacts)。

建议:

  • /var/lib/jenkins 使用 SSD
  • 避免和数据库共用磁盘

4. 使用 systemd 限制资源(可选)

[Service]
LimitNOFILE=65536
MemoryLimit=4G

修改后:

systemctl daemon-reload
systemctl restart jenkins

二、JVM 与 Jenkins 启动参数优化

1. 修改 Jenkins JVM 内存

编辑:

/etc/sysconfig/jenkins

或(CentOS 8):

/etc/default/jenkins

示例(4C8G 机器):

JENKINS_JAVA_OPTIONS="-Xms2g -Xmx4g -XX:+UseG1GC -Dfile.encoding=UTF-8"

推荐:

  • 小项目:-Xmx2g
  • 中大型:-Xmx4g ~ 8g
  • 使用 G1GC(JDK8+)

三、Jenkins 自身配置优化

1. 限制构建历史

每个 Job:

Discard old builds
- Days to keep: 7
- Max builds: 20

全局建议脚本或策略统一管理。


2. 使用 Pipeline 而非 Freestyle

Pipeline 优势:

  • 更好的资源控制
  • 可暂停/并发
  • 易维护

3. 禁用不必要的插件

路径:

Manage Jenkins → Plugins

常见可禁用:

  • 不用的 SCM 插件
  • 重复的通知插件
  • 老旧的 UI 插件

4. 使用 Agent(节点)分担压力

不要让 Master 执行构建。

Manage Jenkins → Nodes
  • Master:只做调度
  • Agent:执行构建(Docker / 物理机)

四、并发与性能优化

1. 控制并发构建数

  • 节点 Executors 数量 = CPU 核数 ~ 1.5×核数
  • 避免一台机器跑太多 Job

2. 使用 Docker Agent(强烈推荐)

pipeline {
  agent {
    docker { image 'maven:3.8' }
  }
  stages {
    stage('Build') {
      steps {
        sh 'mvn package'
      }
    }
  }
}

好处:

  • 环境隔离
  • 快速销毁
  • 减少 Master 负担

五、日志与监控优化

1. 日志轮转

/etc/logrotate.d/jenkins

示例:

/var/log/jenkins/*.log {
  daily
  rotate 7
  compress
  missingok
}

2. 监控 Jenkins 状态

推荐插件:

  • Monitoring (JavaMelody)
  • Prometheus + Grafana
  • Node Monitoring

六、常见性能问题排查

问题 原因 解决
Jenkins 卡死 内存不足 调大 JVM
构建慢 Master 执行 用 Agent
磁盘爆满 历史太多 清理策略
插件冲突 版本不兼容 升级/禁用

七、推荐基础配置示例(4C8G)

JENKINS_JAVA_OPTIONS="-Xms2g -Xmx4g -XX:+UseG1GC"
Executors = 2 (Master)
Agent = 4
Build history = 7 days

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

  • Jenkins 版本
  • CentOS 版本
  • 机器配置
  • 主要用途(Java / 前端 / Docker)

我可以给你一套针对性的优化方案。

0 踩