性能测试的基础知识--QPS和TPS
基本概念:
QPS:Queries Per Second意思是“每秒查询率” ,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
TPS:Transaction Per Second意思是“事务数/秒”,是软件测试结果的衡量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数,最终利用这些信息来估计得分。客户机使用加权协函数平均方法来计算客户机得分,测试软件就是利用这些信息使用加权协函数平均方法来计算服务器端的整体TPS得分。
QPS(TPS)=并发数/平均响应时间 或者并发数=QPS平均响应时间 “这里的响应时间的单位是秒”
举例,我们一个http请求的响应时间是20ms,在10个并发的情况下,QPS就是 QPS=10*1000/20=500.
这里有个关键点就是 QPS一定是跟并发数联系在一起的,离开并发数谈QPS是没有意义的。
QPS、 TPS和性能的关系
一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都是一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换,内存等等其他消耗导致系统性能下降。
开始系统很自由一个用户,CPU工作肯定是不饱和的。一方面该服务器可能有多个CPU,但是只处理单个进程,另一方面,在处理一个进程中,有些阶段可能是IO阶段,这个时候会造成CPU等待,但是有没有其他请求进程可以被处理。随着并发用户数的增加,CPU利用率上升,QPS相应增加(公式为QPS=并发用户数/平均响应时间),随着并发用户数的增加,平均响应时间也在增加,而且平均响应时间增加是一个指数增加曲线。而当并发数增加到很大时,每秒钟都会有很多请求需要处理,会造成进程(线程)频繁切换,反正镇定用于处理请求的时间变少,每秒钟能够处理的请求数反而变少,同时用户的请求等待时间也会变大,甚至超多用户的心理底线。
结论
1、我们对单台服务器进行压测有了性能测试数据后,我们可以根据业务能接受最大客户响应时间对应到相应的QPS数,从而计算出需要的服务器的数量。举例来说,响应时间10ms和1000ms对通过浏览器的客户是没有明显体验差别的,基于1000ms估计服务器的数量我们的成本会降低很多。
2、每天300wPV的在单台机器上,这台机器需要多少QPS?对于这样的问题,假设每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间。( 3000000 0.8 ) / (360024 * 0.2 ) = 139 (QPS).
3、还是2中的数据,如果一台机器的QPS是58,需要几台机器来支持?答:139 / 58 = 3