首页 > 解决方案 > Zing 上的异步分析器开销

问题描述

我们的团队正在使用 HdrHistograms 监控我们的应用程序的延迟。当我将异步分析器附加到它时,所有百分位数都会急剧增加。

操作系统:Red Hat Enterprise Linux 8.1 版(Ootpa)

JVM:11.0.8-zing_20.08.2.0-b2-product-linux-X86_64

如果我使用标志 -i 1000 -t 附加探查器会发生这种情况: 在此处输入图像描述

如果我使用标志 -i 100000 -t 附加探查器会发生这种情况: 在此处输入图像描述

降低采样频率显然会降低开销,但仍然很大。我有两个问题:

  1. 除了降低采样频率之外,还有其他方法可以减少分析开销吗?也许有一些神奇的内核/JVM标志?
  2. 这种开销是否会严重扭曲配置文件本身?

谢谢

标签: javahdrhistogramasync-profilerazul-zing

解决方案


分析间隔以纳秒为单位。您可以明确指定单位,例如-i 10ms. 在您的情况下,-i 1000这意味着 1000 纳秒,这不是一个合理的采样间隔:该过程只会进行连续采样而不是有用的工作 - 当然,结果配置文件不会反映真实情况。从默认间隔 (10ms) 开始,只有在绝对需要时才减少它。

我已经解释了这个答案的合理范围:

至于分析间隔,10 ns 大约是 20-50 个 cpu 指令。以这样的速度取样实际上是不可能的。该过程只会花费所有时间在探查器中。

cpu 模式下的默认采样间隔为 10ms。这种选择对于生产中的分析来说已经足够好了:对于一个普通的应用程序来说,分析开销可以忽略不计,而样本的数量足以收集一个有意义的配置文件。

1ms 间隔通常适用于基准测试和在短时间内分析实际应用程序。较低的间隔很少有用——也许,仅用于捕获一小段运行代码的配置文件。


推荐阅读