关于cassandra jmx mbean有几个问题。
1.属性意味着如何计算? 我用jconsole监控指标。我看到了写mbean的值。 写MBean中有一个属性Mean。我不知道如何计算cassandra中的值,因为我怀疑这个值是对的 进行junit测试,
Timer latency=new Timer()
latency.update(timeTaken, TimeUnit.MILLISECONDS);
我输入了三个值,0,1,2 并期望平均值为1000微秒。但事实是1131.752微秒,这让我很困惑。
3.有平均属性,50thPercentile属性等。 但是当我想看到cluster中的快速更改时,我无法获得即时值。所有这些属性都无法指示更改
答案 0 :(得分:1)
重要的是要注意延迟是估计值,而不是确切的。它无法存储已发生的每个延迟或内存不足。因此,它保留了用于计算统计数据的所有延迟(取决于版本)的近似储层或直方图。假设您的C * 2.2过高,它会存储延迟的直方图,并可以计算给定误差%内的近似平均值,最小值,最大值和百分位数。
https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/utils/EstimatedHistogram.java#L227是平均值计算。由于每个存储桶代表一系列延迟,因此它使用高端,因此它总是处于最差状态,高于实际延迟。
2.2之前保持不同(详见http://metrics.dropwizard.io/3.1.0/)。
除此之外:对于潜伏期而言,平均值是一个相当糟糕的统计数据,因此不应该在其中放入太多的股票,百分位数更好看。