Kai*_*ler 5 performance flamegraph
我们的应用程序性能不佳,因此我们使用飞行记录器的方法分析来查看时间花在哪里。它基本上可以工作,但是一分钟的记录中采集的样本数量远低于 100 个。(使用“分析”预设)
我使用了一个简单的示例应用程序(对随机数求和)进行比较,一分钟或记录生成约 6000 个样本 - 这对我来说似乎是正确的。
首页上有几个警告,例如:内存消耗高,异常异常。但该应用程序基本上可以正常工作,因此这可能是一个转移注意力的事情。
我已经通过增加数量解决了“堆栈深度截断”问题。
我的猜测:要么飞行记录器配置错误,要么时间实际上没有花在代码上而是花在其他任务上。cpu 在运行期间非常繁忙,所以我不认为所有线程都在等待。
请让我知道哪些信息可能很重要,以便我可以添加它们。
(这是一个用 Scala 编写的 Web 框架库,使用 Jetty 作为 Web 服务器;Oracle JDK 8)
Java Flight Recorder 方法采样非常具体。有两种类型的方法示例
这些相同的内容是单独获取的,并且只有前者由任务控制可视化。两种类型的示例中都省略了以下执行状态。
这些省略的状态导致样本数量减少。高 CPU 利用率还可能由于 CPU 不足而降低 JFR 的采样频率。
我不建议使用 JFR 方法采样作为一线性能诊断。具有基于线程转储的采样的可视化虚拟机通常会提供更一致的图像。JFR 是一个功能强大的工具,但您需要结合来自多种类型事件的信息来构建整体性能图。
“异常掠夺”是 Visual VM 倾向于显示热点的情况之一,而 JFR 则默默地省略样本。
下面详细介绍了 JVM 中采样分析的怪癖和任务控制的使用情况:
| 归档时间: |
|
| 查看次数: |
3239 次 |
| 最近记录: |