【发布时间】:2017-11-13 20:10:00
【问题描述】:
我正在尝试解决一个问题,我希望你能帮助我解决这个问题 :) 希望这也能让其他人受益。
我有一个 Jenkins 服务器正在运行 (v2.46.2)。 由于某些原因,在浏览 Web UI 时,某些请求非常非常慢(最多 10 分钟)。第一次加载 UI 时似乎尤其如此。然后,它通常非常敏感。 如果您等待 10/15 分钟,第一个请求将再次变得非常慢。然后相当快了一段时间。
您将如何解决此问题? 到目前为止,这就是我所做的:
- 检查了主机的一般统计信息(cpu、ram 等)。一切正常。
- 检查了 Java VM 的统计信息。在我看来,内存使用情况还不错。
- 设置更好的监控来跟踪传入请求的 nb、处理它们的时间和状态代码。这确实表明某些请求会延迟(最多 10 分钟)。
我从互联网上阅读了许多有趣的东西,包括:Jenkins GUI only shown after waiting for 2 minutes。在这种情况下,信息有点旧(过时了?),并且由于我的工作只保留有限数量的构建,它并没有太大帮助。
这篇博文也非常有趣:https://jenkins.io/blog/2016/11/21/gc-tuning/。就我而言,我不相信问题来自垃圾收集。
我有许多假设,例如:
- 我使用了很多分类视图(带有正则表达式),可能效率低下?但这似乎不足以解释几分钟的延误。
- 只有第一页很长才能加载的事实让我觉得涉及到一些缓存。但它是 html 的缓存吗?凭据?等等。
目前,这些只是猜测。 理想情况下,我想以某种方式分析服务器响应请求所花费的时间。并从那里尝试找到这次去哪里。
这可能吗?我尝试使用 VisualVM,但这仅显示全局数据,对吗?是否可以隔离用于回答请求的资源?你会如何处理它?
注意:我正在探索 Java 世界(来自 Python),所以请不要假设我非常了解 Java VM 的工作原理或您使用的工具 :-)
非常感谢!
【问题讨论】:
-
可以使用jmeter监控java进程:jmeter.apache.org
-
有可能,Hypervisor 很慢。因此它不会反映在您的 VM 统计信息中。例如,虚拟机管理程序是否正在交换
-
感谢 Rik 的 cmets! Jmeter 只会让我产生流量吧?但这并不能真正帮助我理解为什么有些请求需要这么长时间我猜?是的,Hypervisor 也在我的雷达上 :-)
标签: java debugging jenkins profiling