Ubuntu上优化Jenkins性能的实践指南
OutOfMemoryError,需升级服务器内存(如从4GB增至8GB及以上),并通过配置文件(/etc/default/jenkins)调整JVM堆大小(JAVA_ARGS="-Xms2048m -Xmx4096m",初始堆设为最大堆的50%-70%)。/var/lib/jenkins)所在分区更换为SSD(如NVMe SSD),显著提升文件读取/写入速度(尤其是大量依赖库或构建产物的场景)。/etc/default/jenkins中设置合理的JVM堆大小(避免过大导致GC停顿过长,过小导致频繁GC)。示例:JAVA_ARGS="-Xms1024m -Xmx2048m -XX:+UseG1GC"(使用G1垃圾收集器减少停顿时间)。Manage Jenkins > Configure System中的“# of executors”选项,根据服务器CPU核心数设置并发数(建议为核心数的1-1.5倍,如4核服务器设为4-6)。避免过多并发导致资源竞争。Manage Jenkins > Manage Plugins > Installed标签页卸载未使用的插件(如旧版插件、功能重复的插件)。每个插件会增加Jenkins启动时间和内存占用(如一个中等插件约占用20-50MB内存)。Manage Jenkins > Manage Plugins > Updates标签页更新插件至最新版本(新版本通常修复性能bug和安全漏洞)。建议开启“自动检查更新”功能。/var/lib/jenkins/default.json,将updateCenter.url改为"https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json"(需重启Jenkins生效)。Manage Jenkins > Manage Nodes and Clouds添加代理节点(如Linux服务器、Docker容器),将构建任务分发至代理节点执行。减轻主服务器的CPU、内存压力(如主服务器负责任务调度,代理节点负责编译、测试)。git clone、冗余的文件复制),合并多个步骤(如将npm install和npm run test合并为一个sh命令),减少构建时间。parallel指令并行执行任务(如同时对多个模块进行编译、测试)。示例:pipeline {
agent any
stages {
stage('Build') {
parallel {
stage('Module A') { steps { sh 'mvn clean install' } }
stage('Module B') { steps { sh 'mvn clean install' } }
}
}
}
}
docker build --cache-from)避免重复构建镜像;配置构建产物缓存(如node_modules、target目录),复用之前的构建结果(通过Pipeline的stash/unstash或Artifacts功能实现)。Manage Jenkins > Manage Nodes and Clouds > [Node] > Wipe Out Current Workspace清理节点工作区(删除构建产物、临时文件),释放磁盘空间(建议每周清理一次)。Manage Jenkins > Configure System中的“Discard old builds”选项,设置保留最近N次构建(如保留10次)或保留最近N天的构建(如保留7天),避免数据库膨胀(如超过10万条构建记录会导致查询变慢)。Java VisualVM(内置JDK工具)、JConsole或Prometheus + Grafana监控Jenkins的JVM内存使用、CPU占用、线程状态(如jstat -gcutil <pid> 1000查看GC情况)。Performance Plugin(Jenkins插件)分析构建耗时(如识别出某个mvn test步骤耗时过长),针对性优化(如增加测试并行度、优化测试用例)。jenkins/agent:latest),提升构建速度(避免环境配置问题)和资源利用率(容器启动快、占用资源少)。git clone --depth 1)减少历史记录下载量(适用于频繁拉取的项目)。