Jenkins.war进程CPU占用持续过高问题排查求助
Jenkins进程长期高CPU占用的排查方向
核心排查点及解决思路
- 任务持续执行/排队过载
检查是否存在任务被高频触发(比如定时任务间隔过短、SCM轮询频率太高),或是大量任务堆积在构建队列等待执行。可通过Jenkins控制台的「构建队列」「正在运行的任务」面板直观查看,也可通过jenkins-cli list-jobs --with-builds命令统计任务执行频次。 - 插件异常或内存泄漏
老旧或有bug的插件(如部分SCM同步插件、统计分析插件)可能存在内存泄漏或低效逻辑,导致JVM线程持续高负载。可以通过Jenkins「系统管理」→「脚本控制台」执行以下代码查看活跃线程栈信息,定位异常插件:
也可尝试临时禁用非核心插件,观察CPU负载是否下降。Thread.getAllStackTraces().keySet().stream() .filter(t -> t.getState().equals(Thread.State.RUNNABLE)) .forEach(t -> println(t.getName() + ": " + t.getStackTrace()[0])) - JVM参数配置不合理
默认的堆内存或GC参数可能无法适配当前任务量,导致频繁GC占用CPU。检查Jenkins启动参数中的-Xmx/-Xms(堆内存)、-XX:+UseG1GC(GC策略)等配置,用jstat -gc <Jenkins进程PID> 1000 10实时查看GC频率,按需调整堆内存大小或更换GC算法。 - 构建记录清理触发负载
即便配置了保留5次构建记录,若任务执行频繁,Jenkins清理旧构建时的IO或数据库操作可能短时间占用大量CPU。查看jenkins.log日志,确认是否存在频繁的Cleaning up old builds日志条目,判断是否为清理逻辑导致的负载高峰。 - 虚拟机资源瓶颈
虚拟机分配的CPU核心数不足、内存过少,或是宿主机存在资源竞争,都会限制Jenkins的运行效率。通过VM监控工具查看CPU使用率、内存分配情况,必要时调整VM的资源配额。
内容的提问来源于stack exchange,提问作者Tamar Dahan
相关产品推荐
相关产品推荐

