浅谈性能测试理论,或客户理解存在的误区
转载 https://www.cnblogs.com/fy--/p/10727943.html
一、
并发数:是指代同事访问服务器站点的连接数,
实际工作中,经常发现很多人对并发数有误解。
比如领导说我们系统有10w活跃用户,所以系统必须要支持10w并发;
比如压测报告里写某个接口支持100并发,客户就会反问难道系统只支持100用户同时访问?性能是不是太差了!
问出上面问题的人,大多数都存在一个理解上的误区,认为性能测试中的并发数=并发用户数,其实事情没有这么简单。
二、
简单来说,并发数分为两个概念:客户端并发和服务端并发。
客户端并发,有10w人同一时间从10w个不同的客户端发送请求;那么是否可以理解为服务端的并发也是10w呢?
很明显是不能的,原因如下几点
1>客户端(APP或者浏览器)的请求需要处理之后,发送,和客户端设备的性能有直接的关系;
2>网络延迟的问题,很明显了,带宽,距离,信号强弱,都是能直接影响传输速度的;
3>用户操作习惯的问题,有的同学机智,有的同学手拙,
就凭这几点点,10w的用户纵然在同一时间由客户端操作提交了服务请求,到达服务端的并发,很明显也是不足10w的;
假设所有请求在100ms内全部到达,并且认为同一毫秒到达服务器的请求属于同一时刻,那么服务端同一时刻处理的并发请求,也就1000个左右。
我们平时在做测试的时候,在压测工具上设置100并发,就是的的确确的服务端并发了,这个服务端的100并发实际相当远大于100的客户端并发;
有人说,那100000和100,两个数量级上也差别挺大了呀
这里就需要考虑到一个问题:服务请求处理速度(TPS)
假设服务端支持100个并发连接,且每笔请求处理速度为10ms,
那么一秒钟,能处理请求输=并发数*(1秒/请求处理速度)=100*(1/0.01)=10000笔请求
理论上处理完10w笔请求的耗时是10秒钟,这就和大家平时参加抢购等活动的感受差不多了
三、
这也从另一个方面说明了一个问题,并发数是一个重要的指标,但是在性能测试中,不需要过分关注并发数的多少,
而更应该关注处理的业务量(即TPS),只要系统的TPS足够高,处理业务的时间足够短,
哪怕同一时刻来再多的并发请求(只要不超过软硬件限制),我服务器也能给你安排的明明白白的。