90%响应时间(90th Percentile )

在性能测试中,Percentile(百分位数)是一个常见且很重要的术语。从开始分析性能测试报告的第一天起,我们就有听过90th Percentile。那么,这个 90th Percentile到底是啥呢?

什么是90th Percentile?

百分位数是将给定的 样本组 分成 100 个大小相等的区间,这使得我们可以根据百分比分析数据。
这里通过一个简单的例子来解释百分位的用法:如果90%的响应时间值都低于某个HTTP 请求的响应时间,则将该时间称为 90th Percentile 响应时间

在下图中,90% 的请求在 3秒或更短的时间内得到处理:
在这里插入图片描述在这里插入图片描述

在性能测试方面,首先将特定事务或请求的响应时间按升序排序,然后忽略样本数中具有高值的 10%。剩余值中的最高数字将是90th Percentile。在公司常用的性能测试工具中,最后生成的报告里都会生成90th Percentile:
在这里插入图片描述

90th Percentile有啥优点?

网络上有个词经常被大家提起, 那就是“被平均”。例如:某地平均工资为8k,若仔细观察数据可发现,大约十分之九的人薪资只有5k,而另外十分之一的人薪资高达35k,通过计算平均值确实为8k。估计没人喜欢这样“被平均”吧😅。同样,应用程序性能也会被平均值所误导。

在某产品的性能测试中,其平均响应时间是达标的
在这里插入图片描述

通过细究其平均响应时间曲线,发现随着时间的增加,响应时间也在不断增大,最终超过设定的性能指标。但最后结果却是通过的,这就说明后半部分响应时间“被平均”了。
在这里插入图片描述

90th Percentile这个数值则可以有效的规避这个现象,该测试中90th Percentile为3.127秒,很明显是高于其性能指标3秒的。
在这里插入图片描述

如果响应时间的第 50个百分位(中位数)为 3 秒,则意味着 50% 的事务要么与 3 秒一样快,要么快于 3 秒。如果同一事务的第 90 个百分位为 3 秒,则意味着 90% 的速度一样快或更快,只有 10% 的速度较慢。在这种情况下,平均值一定低于 3 秒或介于两者之间。

其次,有时平均响应时间看起来非常长,而单个数据集看起来很正常。但由于可能是网络波动,导致响应时间出现几个偶发性的峰值,从而影响平均响应时间数值,并最终影响测试结果。在这种情况下,90th Percentile(或其他百分位值)也可以从结果中消除异常尖峰数据。

正如下图所示,平均响应时间明显受到异常数据的影响,而90th Percentile的结果与其稳定运行时的响应时间相差无几。
在这里插入图片描述在这里插入图片描述

综上,90th Percentile可以帮助我们更好地了解应用的真实性能,因为它显示了实际响应时间曲线的一部分,而不是采用统计学上的方法进行计算。如果90th Percentile都能满足性能指标,表明90%的用户可以做到符合性能目标的体验,这样面对客户问及系统性能时,是不是更加有信心了呢😏

附:后经抓取慢sql,发现第一个场景在新增完数据后有更新操作。由于新增导致查库的基础数据量不断增加,在无索引的情况下,对全表进行查询,便导致该场景的响应时间一直递增。
在这里插入图片描述

使用explain查看慢sql执行计划,发现其并无索引,执行的是全表查询
在这里插入图片描述

增加索引后,响应时间大幅降低,曲线回归正常。
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值