《普罗米修斯?对!就是 Prometheus ,如何计算 P90 / P99 ? 准确评控服务耗时性能!》, 一起来围观吧 https://blog.csdn.net/qq_34417408/article/details/118447876?utm_source=app&app_version=4.10.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如需一对一服务私聊我哦问题:如何计算 P90 / P99,准确评控服务耗时性能? 结构鲜明的解答: P90 和 P99 是统计学中的概念,通常用于描述数据的分布情况。在计算服务耗时性能时,P90 表示服务耗时排名前 90% 的请求的耗时;P99 则表示服务耗时排名前 99% 的请求的耗时。这两个指标可以帮助我们更精确地评估服务的性能表现。 实现 P90 和 P99 的计算,一种常见的做法是先对耗时数据进行排序,然后根据数据量计算相应的百分位数。下面是一个示例代码:
import numpy as np
def get_percentiles(data, percentiles=[90, 99]):
"""
计算指定百分位数的值
:param data: 耗时数据列表
:param percentiles: 百分位数列表,默认为 [90, 99]
:return: 百分位数和对应的值的字典
"""
sorted_data = sorted(data)
result = {}
for p in percentiles:
index = int(len(sorted_data) * (p / 100.0))
result['P{}'.format(p)] = sorted_data[index]
return result
# 示例数据
data = np.random.normal(loc=1, scale=0.1, size=1000).tolist() + [10]
# 计算 P90 和 P99
percentiles = get_percentiles(data)
print(percentiles)
上述代码中,使用了 NumPy 库的 normal 函数生成了 1000 个正态分布的随机数,并添加了一个特别大的值,以模拟异常情况。然后使用 get_percentiles 函数计算了 P90 和 P99 对应的值。最后输出结果如下:
{'P90': 1.0968952197977261, 'P99': 1.2801766192173583}
该结果表明,耗时排名前 90% 的请求的耗时不超过 1.1 秒,而耗时排名前 99% 的请求的耗时不超过 1.3 秒。通常情况下,P90 的值应该尽量小,以保证大多数请求都能够快速响应;而 P99 的值则可以稍微放宽,以容忍极少数请求出现较长的耗时。