1 性能测试分析能力阶梯度
1)工具操作:包括压力工具、监控工具、剖析工具、调试工具。
2)数值理解:包括工具中输出所有的数据。
3)分析:包含趋势分析、相关性分析、证据链分析,理解了工具产生的数值之后,还要把他们的逻辑关系想明白。
4)调优:有了分析后,选择调优方案。
2 分析是做性能测试最重要阶段
性能分析思路:
1)瓶颈的精准判断
2)线程递增的策略
3)性能衰减的过程
4)响应时间的拆分
5)构建分析决策树
6)场景的对比
2.1 瓶颈的精准判断
2.1.1 TPS曲线
对性能瓶颈做出判断是性能分析的第一步,有了问题才能分析调优。
很多在描述性能性能过程中,说要找到性能测试中曲线上的“拐点”。但是大部分系统是没有明确拐点。
对 TPS 的增加控制得更为精准的话,那么这个 TPS 的增加是有一个有清晰的弧度,而不是有一个非常清晰的拐点。
可以有一个非常明确的判断,那就是瓶颈在第二个压力阶梯上已经出现了。因为响应时间增加了,TPS 增加得却没有那么多,到第三个阶梯时,显然增加的 TPS 更少了,响应时间也在不断地增加,所以,性能瓶颈在加剧,越往后就越明显。
判断方式:
- 有瓶颈!
- 瓶颈和压力有关。
- 压力呈阶梯,并且增长幅度在衰减。
- 随着用户数的增加,响应时间也在缓慢增加。
- TPS 前期一直都有增加,但是增加的幅度在变缓,直到变平。
所以对 TPS 曲线来说,它可以明确告诉我们的就是: - 有没有瓶颈:其实准确说所有的系统都有性能瓶颈,只看我们在哪个量级在做性能测试了。
- 瓶颈和压力有没有关系:TPS 随着压力的变化而变化,那就是有关系。不管压力增不增加,TPS 都会出现曲线趋势问题,那就是无关。
3 线程递增的策略
对一个系统来说,如果仅在改变压力策略(其他的条件比如环境、数据、软硬件配置等都不变)的情况下,系统的最大 TPS 上限是固定的。
4 性能衰减
只要每线程每秒的 TPS 开始变少,就意味着性能瓶颈已经出现了。但是瓶颈出现之后,并不是说服务器的处理能力(这里我们用 TPS 来描述)会下降,应该说 TPS 仍然会上升,在性能不断衰减的过程中,TPS 就会达到上限。
3)对于场景中线程(有些工具中叫虚拟用户)递增的策略,我们要做到以下几点:
场景中的线程递增一定是连续的,并且在递增的过程中也是有梯度的。
场景中的线程递增一定要和 TPS 的递增有比例关系,而不是突然达到最上限。对于秒杀类的场景,我们前期一定是做好了系统预热的工作的,在预热之后,线程突增产生的压力,也是在可处理范围的。这时,我们可以设计线程突增的场景来看系统瞬间的处理能力。如果不能模拟出秒杀的陡增,就是不合理的场景。
5 构建分析决策树
构建分析决策树是对架构的梳理,是对系统的梳理,是对问题的梳理,是对查找证据链过程的梳理,是对分析思路的梳理。它起的是纵观全局,高屋建瓴的指导作用。
5)场景的对比
当你觉得系统中哪个环节不行的时候, 又没能力分析它,你可以直接做该环节的增加。
记录学习知识点分享