Jmeter的Throughput和平均响应时间计算方法整理

 

整理了下Jmeter的Throughput和平均RT的计算,如下公式:

 

TPS=(sample样本数)/(最后一个线程启动的时间+最后一个线程持续的时间-第一个线程启动的时间)

RT=所有sample样本响应时间和/样本个数

 

1.TPS:每秒处理的事务数,jmeter的Throughput为吞吐率(请求数/秒),在加了事务控制器后,TPS=Throughput

宏观上:TPS=并发数/响应时间,jmeter的Throughput = (number of requests) / (total time) ,即

Throughput =(sample样本数)/(最后一个线程启动的时间+最后一个线程持续的时间-第一个线程启动的时间)

可以这样理解这个公式:绝对的并发是不存在的,请求发出的时间总有先后,绝对的TPS也是无法计算的,统计的角度看,服务器处理请求总数/花费的时间即是TPS,这也是

为什么需要不断增大用户数来寻找服务器的最大TPS的原因

 

2.平均响应时间=所有sample样本响应时间和/样本个数

 

 误区:

TPS=请求数/RT   (RT是所有事物的平均时间) 

 

此TPS的计算公式是错误的

 

数学公式法:

    TPS= (number of requests) / (total time)       --------公式1     TPS的定义公式

  TPS=1/RT * 请求数 = 样本个数2/所有sample样本响应时间和   -----------公式2 带入公式  平均响应时间=所有sample样本响应时间和/样本个数

    假设公式2等于公式1 ,则 

    (number of requests) / (total time) = 样本个数2/所有sample样本响应时间和  

    即:

    1/ (total time)  =  样本个数 / 所有sample样本响应时间和 

    显然等式两边不成立,假设不成立

 

    另:number of requests 是等于 样本个数  等于  请求数

 

 

场景分析法:

    场景1,A应用是单线程处理,处理一个请求需要1s,5个VU去请求一次,第一个请求花费了1s,第二个花了2s...第五个花了5s,5个请求总耗时5秒,5个请求响应时间的总和是(5+4+3+2+1)=15 s,总请求数是5,所以A系统的TPS = 5/5 = 1,平均响应时间是(5+4+3+2+1)/5=3s,此时若按照TPS=1/RT*请求数  计算,则TPS=1/3 * 5 = 5/3 , 显然是不对的

    场景2,当去请求多个事物时,此时这个公式是明显错误的

 

参考:

http://www.i3geek.com/archives/1165

http://jmeter.apache.org/usermanual/glossary.html#Throughput

http://yhz61010.iteye.com/blog/1735874

http://www.cnblogs.com/ceshixuexi/p/7116683.html

posted @ 2017-11-06 21:15  雾火  阅读(29804)  评论(0编辑  收藏  举报