如何计算监测数据的百分比
简介
监测在线系统,尤其是数据密集型的系统,对于持续的健康检查、分析和检测停机时间以及提高性能是极其重要的。基于百分位数的方法是一种非常有效的技术来衡量这种系统的行为。让我们来看看这个方法。
一般复习
什么是百分位数,为什么它们是有用的?
在统计学中,表示某组观察值低于该值的数值被称为百分位数或百分位数。例如,对于一个学生来说,如果他/她得了90分的百分位数,这意味着90%的学生的分数都低于他。另一个例子是,如果一个HTTP请求的响应时间是90百分位数,这意味着90%的响应值都在它之下。
25个百分位数和75个百分位数之间的观察范围被称为四分位数范围。
第25个百分位数也被称为第1个四分位数,第50个百分位数为第2个四分位数,第75个百分位数为第3个四分位数。
当我们想知道一个数值相对于其他观测值的位置时,百分比是非常有用的。这可以通过数值的分布图来实现。有各种统计学术语,如平均数、中位数和模式与之相关。
计算百分位数的公式可以给定为
其中,P=百分位数,N=数据集中按升序排序的数值数,n=固定序数。
监测数据密集型系统 – 计算百分位数
在监测任务中,我们主要使用百分比法。其他方法,如平均法,受离群值的影响很大。在在线系统中,收集器被用来收集数据和计算数据的量值。
一个共同的方法
在HTTP请求监测的情况下,请求周期可以被划分为量值。一个特定的四分位数比如(φ50)可以说是一个不能超过50%概率的随机值。假设HTTP请求的数据流包含n个元素,那么我们需要找到一个有φ 𝑥 𝑛 的元素,这个元素的大小可以是1GB。
解决这个问题的方法是计算数据流的近似量值。在这种方法中,整个数据流被压缩成一组段。每个段有一个固定的宽度 ( 𝑤 ) 和每个段的长度 ( l )
活体捕获数据的百分比 –
例如,假设我们想在某个特定的时间点在内存中存储1000个值。
让我们选择k=100的大小,同时选择最小宽度(分辨率)为1ms。
第一组数值在0到1ms之间 ( w = 1ms)
并且,
Second bin – 1至3ms(宽度=2ms)。
Third bin – 3至7毫秒(宽度=4毫秒)。
**till 10th bin ** – 511至1023毫秒(宽度=512毫秒)。
计算方式
- 为我们的响应时间创建仓(例如,0到100ms,100ms到200ms,200ms到400ms……)。
-
计算有多少个回应,以及每个仓内的回应数量。
-
将bin计数器相加,直到总和超过总数的n%,以计算出第n个百分点。
Python中伪代码
示例
def increment(millis):
i = index(millis)
if i < len(_limits):
_counts[i] += 1
_total+=1;
def estimate_percentile(percentile):
if percentile < 0.0 or percentile > 100.0 :
print("percentile must be between 0.0 and 100.0, was " + percentile)
return "Error"
if percentile - p.get_percentage() <= 0.0001):
return get_limit()
总结
性能监测和健康检查是当今每个数据密集型应用程序的关键。基于百分位数的方法在这一领域卓有成效,并被证明是当前情况下的有用工具。