背景:对于1、2、3使用场景与概念有点混淆
(1)负载测试
负载测试指通过在被测系统上不断增加压力,直到性能指标例如响应时间超过预定指标或者某种资源已经达到饱和状态。这种测试的目的是找到系统的处理能力极限,另一方面这种方法可以了解系统的容量,为性能调优提供依据。
(2)压力测试
压力测试的主要目的是检查系统在一定压力下的性能表现。通过模拟负载等方法,使得系统资源占用达到较高水平。压力测试一般也用来验证系统的稳定性
(3)并发测试
并发测试的主要目的是发现系统中可能隐藏的并发访问问题,通过模拟用户并发访问实现,主要关注内存泄露、线程锁、资源争用等。并发测试可以在开发的各阶段针对不同的对象使用。
这里对负载测试、压力测试、并发测试加以区分,通过测试的目的区分这三个概念是比较容易的,负载测试的目的在于发现系统的性能瓶颈;压力测试的目的是在一定压力下验证系统性能表现,重点关注响应时间等内容;并发测试则是系统瞬间可以处理的请求数。
性能分析的通用方法之一是“拐点分析”的方法。“拐点分析”方法是一种利用性能计数器曲线图上的拐点进行性能分析的方法,该方法的基本思想是基于这个事实:性能产生瓶颈是由于某个资源的使用达到了极限,此时的表现是随着压力增大系统性能表现急剧下降,因此,只要关注性能表现上的“拐点”,获得“拐点”附近的资源使用情况,就能够定位出系统的性能瓶颈。
例:公司给我个接口测性能瓶颈是否满足线上要求,线上环境5分钟最多有150个请求,平均1小时1200个请求,请求30s超时。
解决:
压测工具:jmeter
解决思路:
负载测试:线程组5、10、15,时间5min,测出系统性能瓶颈,确定是否满足要求 ,通过聚合报告吞吐量、jp@gc - Transactions per Second 曲线趋势确定;
并发测试:线程组5、10、15,时间5min,添加同步定时器,测出系统最大并发数,通过请求是否超时确定;
压力测试:假如最大并发数是10,线程组10,时间60min,测试一定压力下,长时间运行,验证系统是否正常。关注异常率。