Jos*_*ley 6 jenkins jenkins-plugins
查看作业页面时Jenkins 非常慢(超过3分钟,使用冷磁盘缓存).主页显示正常; 问题仅在查看单个作业的页面时.
我认为问题始于Jenkins +插件的最新更新,但我该如何解决这样的问题呢?
我该如何解决这样的问题?
首先,确保您可以重现问题.它有助于测试.如果仅在缓存冷却时出现性能问题,则清除磁盘缓存(Linux的说明)可能会有所帮助.
Jenkins的"管理插件"(在Manage Jenkins部分下)允许您单独禁用和降级插件.如果您怀疑特定插件导致问题,这可以帮助您确认.
strace可以显示Jenkins正在进行的系统调用.首先,获取主要的Jenkins PID:
root@server:~# ps -ef | grep jenkins
jenkins 589 1 0 17:03 ? 00:00:00 /usr/bin/daemon --name=jenkins --inherit --env=JENKINS_HOME=/home/jenkins --output=/var/log/jenkins/jenkins.log --pidfile=/var/run/jenkins/jenkins.pid --umask=027 -- /usr/bin/java -Djava.awt.headless=true -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080 --ajp13Port=-1
jenkins 591 589 7 17:03 ? 00:00:51 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080 --ajp13Port=-1
Run Code Online (Sandbox Code Playgroud)
(在这种情况下,pid是591.)
接下来,运行strace.由于Jenkins是多线程的,因此您需要添加-f以跟踪所有线程.
strace -p 591 -f
Run Code Online (Sandbox Code Playgroud)
如果你很幸运,你会发现一个明显的减速原因.(就我而言,其中一个主题是build.xml为我正在尝试查看的特定工作重复打开每个以前的构建.)
strace监控系统调用,并告诉你什么进程所做的事.jstack显示进程的调用堆栈,它有助于告诉您它为什么要这样做(它正在尝试完成它).
jstack需要一个pid,需要以与您正在检查的进程相同的用户身份运行.(有关详细信息,请参见此处.)
sudo -u jenkins jstack 591
Run Code Online (Sandbox Code Playgroud)
这显示了很多信息:每个Jenkins线程的堆栈跟踪,库和框架代码的大量条目,例如请求处理程序和XML等.但是,在那里,你应该能够找到堆栈跟踪特定的请求处理程序运行缓慢,并且堆栈跟踪的某些部分指示它正在尝试执行的操作.
| 归档时间: |
|
| 查看次数: |
5367 次 |
| 最近记录: |