为了账号安全,请及时绑定邮箱和手机立即绑定

为什么延迟堆栈跟踪没有平均值?

为什么延迟堆栈跟踪没有平均值?

婷婷同学_ 2021-12-22 19:16:41
当我使用 Java Mission Control 打开 .jfr 文件(Java Flight Record)时,我可以在 Thread -> Latencies -> Latency Stack Traces 选项卡中找到“Stack Trace”、“Longest”和“Count”。我关心平均值,但不关心最长的。Java 延迟选项卡中有平均值,但它包含与事件类型相关的所有延迟。其中一些对我来说毫无意义,例如:sun.misc.Unsafe.park(boolean, long)     295,569,155,245 436,427java.util.concurrent.locks.LockSupport.park(Object)     295,569,155,245 344,030java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await()       295,569,155,245 263,418java.util.concurrent.LinkedBlockingQueue.take()     63,773,776,315  257,531java.util.concurrent.ThreadPoolExecutor.getTask()       63,773,776,315  257,511java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker)        63,773,776,315  257,511java.util.concurrent.ThreadPoolExecutor$Worker.run()        63,773,776,315  257,511java.lang.Thread.run()      63,773,776,315  257,511上面是线程池的空闲时间,等待下一个任务。这个和所有其他堆栈跟踪混合的平均值是没有意义的。我只关心业务堆栈跟踪的延迟。如何获得特定延迟堆栈跟踪的平均值。能不能把原始数据导出成csv,然后自己计算。
查看完整描述

1 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

为了保持低开销,Flight Recorder 仅记录异常值。例如。如果延迟的持续时间低于 20 毫秒,则不会记录。

可以对延迟进行采样,以获得平均延迟的近似值,但截至今天(JDK 11)尚不可用。


查看完整回答
反对 回复 2021-12-22
  • 1 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信