性能监控 TP 指标

TP 指标

在对系统进行性能测试或性能监控时候,TP 指标是一种比较常见的性能参数,包括 TP50、TP99、TP999 等等。

$$
总次数 \ast 指标数 = 对应指标在总次数中的序号
$$

通俗点说,假设为了测试某接口性能,对其调用100次,将每次的响应时间升序排序,假设响应时间排序结果为:1、2、3…99、100 毫秒。

那么:

$$
TP50 = 100 * 50\% = 第50次 = 50毫秒
$$

也就是说,该接口 TP50 达到了 50 毫秒的水平,也就是说请求该接口有 50% 的情况耗时在 50 毫秒以下

同理:

$$
TP999 = 100 * 99.9\% = 第99.9次 \approx 100毫秒
$$

也就是说,该接口 TP999 达到了 100 毫秒的水平,也就是说请求该接口有 99.9% 的情况耗时在 100 毫秒以下

需要注意的是,一般在 TP 指标中,如果对应的序号不是整数,一般向上取整。例如在上例的 TP999 中,序号 99.9 不存在,取了序号 100 来计算。

百分位数

TP 指标脱离了在计算机中的应用,实际上在统计学学中就是百分位数的概念。

百分位数:如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。可表示为:一组n个观测值数值大小排列。如,处于p%位置的值称第p百分位数。

也就是说,TP50 其实就是 50百分位数,TP999 就是 99.9百分位数。百分位数计算的结果是一个具体值,计算公式如下:

假设存在数组(下标从 0 开始) a,百分位数为:p,将数组其升序排序后,那么:

$$
(a.length - 1) \ast p = i + j
$$

其中 $i$ 为结果整数部分,$j$ 为结果小数部分。

计算最终结果为:

$$
res = (1 - j) \ast a[i] + j \ast a[i+1]
$$

举个例子:存在数组:[1, 2, 3, 4, 5, 6, 6, 6, 6, 7, 8, 9],已经保证升序排序了,求90百分位数,那么:

$$
\begin{split}
(a.length - 1) \ast p &= i + j\
(12-1) \ast 90\% &= 9.9 \
(12-1) \ast 90\% &= 9 + 0.9 \
\end{split}
$$

计算最终结果为:

$$
\begin{split}
res &= (1 - 0.9) \ast a[9] + 0.9 \ast a[10]\
res &= 0.1 \ast 7 + 0.9 \ast 8\
res &= 7.9
\end{split}
$$

也就是说,这组数据的90百分位数为 7.9,即 TP90 = 7.9。

PS:以上公式实际上就是 Excel 的 PERCENTILE 函数的实现。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×