我最近从Jenkins 1.6升级到2.5。在我这样做之后,我注意到CPU使用率非常高,有时超过300%(只有4个内核,所以我认为它不会超过400%)。我不知道从哪里开始调试这个,but here's a thread dump以及来自top / htop的一些截图
答案 0 :(得分:15)
事实证明,我的问题是几个工作有数千个旧版本。这在Jenkins 1.6中很好,但它在2.5中是个问题(我想Jenkins可能会在您查看作业概述页面时尝试将所有构建加载到内存中)。为了解决这个问题,我刚从问题作业using this strategy中删除了大部分旧版本,然后重新加载了jenkins。工作就像一个魅力!
我还设置了“discard old builds”插件,仅保留最近的50个版本,以防止再次发生这种情况。
答案 1 :(得分:3)
每当有请求进入时,Jenkins都会产生一些线程来提供请求。在升级Jenkins之后,它可能在当时以高油门调用。在以下情况下,Plz检查Jenkins服务器的CPU和内存使用情况:
- Jenkins闲置,服务器上没有其他应用程序正在运行。
- 计划构建,服务器上没有其他应用程序正在运行。
并比较可以帮助您确定Jenkins或与其他应用并行运行jenkins是否真正制造麻烦的行为。
正如@vlp所说,尝试通过JVisualVM监视jenkins应用程序并使用Jstad配置挂钩。请参阅此link以使用Jstad配置JvisualVM。
答案 2 :(得分:1)
2.5似乎是一个开发版本,而1.6是他们的长期支持版本。因此,在使用前沿版本时,您应该期待一些回归似乎是合乎逻辑的。这个问题的赏金证明其他用户也正在经历这个问题。解决方案是报告Jenkins bug跟踪器上的错误。您暂时可以暂时降级到已知的正常版本。
答案 3 :(得分:1)
在Windows 7 Ultimate上安装Jenkins时,我注意到了一些CPU使用异常的原因。
我最近从v2.138升级到v2.140,并添加了一些其他插件。我开始注意到Jenkins Java可执行文件存在问题,每次作业触发都会占用多达60%的CPU时间。没有一项工作受CPU限制,只是从外部服务器获取数据,因此没有任何意义。只需重新启动Jenkins服务即可解决此问题。我认为升级只是没有完全完成。
使用默认内存设置运行时,Java Garbage Collection引发错误并占用CPU。这可能是过高的,但是我变得疯狂了,将Jenkins的Java Heap Space从默认的256mb提升到了4gb。为我解决了这个问题。
请参阅此解决方案的说明:
https://stackoverflow.com/a/8122566/4479786
答案 4 :(得分:0)
尝试将以下参数传递给詹金斯:
-Dhudson.util.AtomicFileWriter.DISABLE_FORCED_FLUSH=true
答案 5 :(得分:-2)