性能测试学习笔记(2)
上周学习了怎么估算出性能指标,进行压力测试,本周继续这个话题,通过《怎么正确做性能测试》这篇文章,深入学习下测试前辈们的性能测试流程。
性能测试关注点
1. 关注90线,舍弃平均值
- 平均值不靠谱,因为是没有去除最高分最低分平均的结果,说明不了问题的。(嫌弃脸)
- 90线 - 百分之90的请求响应时间小于XXX。更有参考价值。
2. 关注响应时间和吞吐量,选取系统的‘最优状态’
请认真看图。
压测时:
- 压力+++++++
- 系统性能------ (CPU,Memory,DB等变得不稳定)
- 响应时间++++++++++
- 系统吞吐-------------
这个点便是系统的Optimal Rate(软件的最稳定时的最大吞吐量)
我们要为‘响应’桑划一条底线,底线之前随便压,边压边关注‘吞吐’君的情况,一旦‘吞吐’君不行了往下掉,再回头看看‘响应’桑是不是high了(必须high),这个时候记录下他们两的record就行(如果这个record达不到要求指标,那么我们就要优化我们的系统了) ———————
无意开车的Jenny
3.总结
一般且重要的关注点:
- Thoughput吞吐量
- Latency响应时间
- 资源利用(CPU/MEM/IO/Bandwidth…)
- 成功率
- 系统稳定性
后期继续对这块进行系统的学习
走套路做性能测试
准备工作
-
响应时间底线定值
TP99定律: a. 99.9%请求响应时间小于___ms; b. 平均响应时间小于__ms;
响应时间底线的推算可以参考下性能测试学习笔记(1) //看不懂,我后面345678笔记继续写继续一起学习,还是不懂不要问我,谢谢。
-
确保接口成功率100%
-
压测刚开始,使用1个并发去做,查看了解系统的最优状态
开始工作
-
考虑响应时间底线的情况下,压力++++,找出系统稳定时的最大吞吐值
友情提示: a. 压测数据 be smart b. 线上压测注意步伐,小步快走为最优方案
不懂网上看-->性能测试关注点的第二点
-
不考虑响应时间底线的情况下,压力+++,找出系统的最大吞吐值
基本要求: a. 接口成功率100% b. 压测持续时间10min+
如果有条件就压,没有条件就不要压,不然线上的其他设备压坏了
// 对应理解的还有“最佳并发用户数”和“最大并发用户数”,下周再详细分析学习。
- 低吞吐量和网络小包的测试 //没怎么接触,后面再了解看看
a轮压测
-
前提: 系统稳定时的最大吞吐值
-
测试策略: Soak Test
-
关注点: 系统性能
连续7天的不间断的压测系统。然后收集CPU,内存,硬盘/网络IO,等指标,查看系统是否稳定,比如,CPU是平稳的,内存使用也是平稳的。那么,这个值就是系统的性能
b轮压测
-
前提: 系统的最大吞吐值,系统稳定时的最大吞吐值
-
测试策略: Burst Test
-
关注点: 系统性能
loop: a. 在【系统稳定时的最大吞吐值】压测5min b. 在【系统的最大吞吐值】压测1min
"如此往复个一段时间,比如2天。收集系统数据:CPU、内存、硬盘/网络IO等,观察他们的曲线,以及相应的响应时间,确保系统是稳定的。"
总结
关于报警值:
- 系统的软报警线:【系统稳定时的最大吞吐值】* 66.7%
- 系统的硬报警线:【系统稳定时的最大吞吐值】* 80%
*【系统的最大吞吐值】仅仅用来扛突发的peak
“工程是一门科学,而科学是严谨的。”
本次笔记学习资料:
Why Averages Suck and Percentiles are Great
// TCP两个没怎么看,mark后面再单独学习下
本次笔记依旧是只写了个大概,并且搬砖学习大神的理念,下周继续学习