开始性能测试前需要了解的内容:
1、项目具体需求,主要是从需求说明书或者规划。
2、指标:响应时间在多少以内,并发数多少,tps多少,总tps多少,稳定性交易总量多少,事务成功率,交易波动范围,稳定运行时长,资源利用率,测哪些交易,哪些接口,测试哪些场景。
3、环境:生产环境服务器数量,测试环境服务器数量,按照资源配比得出测试指标。
4、协议:系统用什么协议进行通讯。
5、执行机数量:如果并发用户数太多,需要把压力发到不同的压力机,不然可能会存在压力机瓶颈问题,导致tps和响应时间抖动。
6、交易占比:分析线上日志得出tps占比。
7、系统架构:请求流经过哪些环节,压测时监控这些环节。
测试阶段:
一:性能基线
1、定义基线的数据规格与指标
二:综合压力
1、基准:例如:一个用户迭代100次,关注响应时间,事务成功率100%。
2、负载:例如:10个用户跑10分钟,关注响应时间,事务成功率100%。
3、容量:估算一个总tps,根据公式计算出每个交易的pacing和vu,获取系统最大处理能力(最优容量),再令外测出三个梯度作为对比(两组小于最优容量,一组大于最优容量),四组容量VU等差,tps等差,对比每组容量实际占比和测试占比(越接近越能模拟真实场景),关注响应时间,总tps,tps,事务成功率,AP cpu利用率,DB cpu利用率,线程死锁,数据库死锁。
其中响应时间应小于负载测试时间,总tps应约等于预估总tps(相差不超过10是正常的),每个交易的tps应接近预估总tps*占比,事务成功率100%,AP cpu小于60%,DB cpu小于80%。dump线程栈检测是否有线程死锁,查看数据库日志看是否有数据库死锁。
4、稳定性:采取最优容量的80%作为压力持续运行24小时,观察系统长时间运行的性能表现,关注响应时间,tps,总tps,事务成功率,交易总数,观察是否有内存溢出(堆溢出,栈溢出,持久代溢出),cpu利用率是否达标,mem是否不持续增长,是否能正常触发fullgc,gc时间,gc频率, fullgc时间,fullgc频率(重点关注,JVM调优就是为了减少fullgc频率)。
过程中的监控:
1、cpu与内存的资源占用率
2、页面响应时间
3、接口响应时间
4、接口响应次数
5、火焰图(可选)
原文地址:https://www.cnblogs.com/zhangyanshared/p/13341348.html