1.TPS:每秒处理的事务数,jmeter的Throughput为吞吐率(请求数/秒),在加了事务控制器后,TPS=Throughput
宏观上:TPS=并发数/响应时间,jmeter的Throughput = (number of requests) / (total time) ,即
Throughput =(sample样本数)/(最后一个线程启动的时间+最后一个线程持续的时间-第一个线程启动的时间)
可以这样理解这个公式:绝对的并发是不存在的,请求发出的时间总有先后,绝对的TPS也是无法计算的,统计的角度看,服务器处理请求总数/花费的时间即是TPS,这也是
为什么需要不断增大用户数来寻找服务器的最大TPS的原因
2.平均响应时间=所有sample样本响应时间和/样本个数
TPS=1/RT用户数(RT是所有事物的平均时间)
是不对的
假如1,A应用是单线程处理,处理一个请求需要1s,5个VU去请求一次,第一个请求花费了1s,第二个花了2s…第五个花了5s,总时间是5s,总请求数是5,所以TPS=1,平均响应时间是(5+4+3+2+1)/5=3s,此时按照TPS=1/RT用户数是不对的
假如2,当去请求多个事物时,此时这个公式是明显错误的
samples averager = users duration
总请求数 平均响应时间 =并发数 持续时间
QPS(TPS)= 并发数/平均响应时间
QPS(TPS)= 总请求数/持续时间
网上有人提供的公式,计算出来和聚合报告里的比较接近
这么想想的话因该可以用jmeter现有的测试报告自己计算出tps,
在聚合报告中有 samples 还有error这么两个tital ,我的计算公式是这样的
tps = samples * (1-error) / runntime
1-error是获得请求正确的访问百分比,这样就能获得正确请求以及访问的数量,然后在除以测试总时间的秒数, 这不就得到了tps了嘛!
我感觉自己有点自作聪明了,希望看到这个帖子的朋友能给点想法.
这个脚本是用perl写的直接分析jtl文件从而获得整个测试的tps值
作者:岸上雨
链接:https://www.jianshu.com/p/18f98b4d90a6
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。