【发布时间】:2020-10-11 00:19:53
【问题描述】:
我正在尝试使用 async profiler v.1.8.1 来分析我的应用程序。
JVM 是 openjdk 版本“15-ea”2020-09-15,但同样发生在 openjdk 14.0.1 上。
异步分析器使用以下标志运行:-d 60 -t -i 10000 -o svg
它显示了极其奇怪的结果。 我们可以看到硬件线程大部分时间不是在 java.lang.Thread::run 中,而是在一些奇怪的地方。怎么解释?我看到了一个可能的解释,即异步探查器无法正确遍历堆栈跟踪并将这些堆栈跟踪的一部分放在错误的位置。还有其他解释吗?怎么解决?
【问题讨论】:
-
虽然该问题缺乏可重复的示例(请尽可能添加),但问题的要点已被理解且有意义。我认为它不值得被否决/接近投票。
-
您是在虚拟化环境中、在容器中还是在真实硬件上运行 Java?内核版本是多少?
-
是的,它是 AWS EC2 中的 Ubuntu 虚拟机。我刚刚将内核更新为 5.8.0-050800-generic(如您的链接中所述),但重启后问题仍然存在。我会进一步挖掘。无论如何,它已经与异步分析器本身无关。
-
非常感谢您的帮助!原来默认时钟源是xen。将其更改为 tsc 已解决此问题。我使用了这个指令,以防有人需要它。 aws.amazon.com/ru/premiumsupport/knowledge-center/…
标签: java jvm async-profiler