Ubuntu Jenkins部署资源分配指南
在Ubuntu上部署Jenkins前,需根据使用场景规划硬件资源,避免因资源不足导致性能瓶颈:
Jenkins基于Java运行,JVM堆内存(Heap)是影响性能的关键因素。需根据服务器内存大小调整-Xms(初始堆大小)和-Xmx(最大堆大小),避免内存溢出(OutOfMemoryError):
/etc/default/jenkins(Ubuntu默认安装路径)。JAVA_ARGS环境变量,例如:JAVA_ARGS="-Xms1024m -Xmx4096m" # 初始堆1GB,最大堆4GB
-Xmx不宜超过服务器物理内存的70%(需预留内存给系统和其他服务);若遇到PermGen space错误(永久代内存不足,Java 8及以上已移除),可添加-XX:MaxMetaspaceSize=512m调整元空间大小。过多并发构建会争夺CPU、内存资源,导致任务执行变慢。需根据服务器CPU核心数调整:
Manage Jenkins→Configure System→# of executors。对于大规模项目或多节点构建需求,通过分布式构建将任务分配到多个Slave节点,减轻Master节点压力:
Manage Jenkins→Manage Nodes and Clouds→New Node,创建Slave节点。/home/jenkins),并设置认证方式(如SSH密钥)。docker run -d --name jenkins-agent \
-v /var/run/docker.sock:/var/run/docker.sock \ # 共享Docker socket(可选,用于容器内构建)
-e JENKINS_URL=http://master-ip:8080 \
-e JENKINS_SECRET=YOUR_AGENT_SECRET \
jenkins/agent
存储性能直接影响Jenkins的构建速度(尤其是频繁读取/写入文件的场景):
JENKINS_HOME,默认/var/lib/jenkins)挂载到单独的分区,避免磁盘空间占满导致服务崩溃。例如:sudo mkdir /mnt/jenkins_data
sudo chown jenkins:jenkins /mnt/jenkins_data
sudo mount /dev/sdb1 /mnt/jenkins_data # 将/dev/sdb1挂载到/mnt/jenkins_data
sudo nano /etc/fstab # 添加开机自动挂载配置(如UUID=xxxx /mnt/jenkins_data ext4 defaults 0 2)
Manage Jenkins→Manage Old Data),或配置流水线自动清理工作空间(post阶段添加cleanWs()步骤)。插件是Jenkins的功能扩展,但过多或不必要的插件会增加内存占用和启动时间:
Manage Jenkins→Manage Plugins→Available),新版本通常修复了性能bug和安全漏洞。Manage Jenkins→Manage Plugins→Installed→点击“Uninstall”),减少资源消耗。通过监控工具实时了解Jenkins资源使用情况,动态调整资源分配:
Manage Jenkins→System Information,查看JVM内存、线程、磁盘空间等基础指标。Java VisualVM(监控JVM内存和线程)、Prometheus+Granafa(可视化监控CPU、内存、构建时间)、Nagios(告警机制)。-Xmx值;