下面从系统层面(Debian)和Jenkins 层面两部分,给你一套比较实用、可落地的优化方案。
cat /etc/debian_version
Jenkins 会大量使用线程和文件描述符。
编辑:
sudo vim /etc/security/limits.conf
添加:
jenkins soft nofile 65536
jenkins hard nofile 65536
jenkins soft nproc 4096
jenkins hard nproc 4096
如果是 systemd 启动:
sudo systemctl edit jenkins
[Service]
LimitNOFILE=65536
LimitNPROC=4096
sudo vim /etc/sysctl.conf
fs.file-max = 2097152
vm.swappiness = 10
net.core.somaxconn = 1024
应用:
sudo sysctl -p
Jenkins 对磁盘 IO 非常敏感(workspace、logs、artifacts)。
建议:
/var/lib/jenkins 放 SSDsudo vim /etc/fstab
/dev/sdX /var/lib/jenkins ext4 defaults,noatime 0 2
jenkins 专用用户编辑:
sudo vim /etc/default/jenkins
或 systemd:
sudo systemctl edit jenkins
示例(4C8G):
JAVA_OPTS="-Xms2g -Xmx4g \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-Djenkins.model.Jenkins.logStartTime=true"
建议:
不要在主节点跑构建
pipeline {
agent { label 'docker-agent' }
}
options {
buildDiscarder(logRotator(numToKeepStr: '20'))
}
/var/lib/jenkins/.m2/repository
~/.npm
可挂载共享缓存目录。
✅ Debian 12
✅ Jenkins LTS
✅ OpenJDK 17
✅ Docker Agent
✅ SSD + G1GC
✅ 主节点不跑构建
如果你愿意,我可以:
你现在是 单台 Debian 服务器 还是 集群环境?