请教大牛,运行结果里的TPS和MTT计算的问题。
不太清楚在ngrinder中对这两个指标怎么统计计算的。 对于TPS而言,是在脚本中有一次GET或者POST请求,就算一次吗? 对于MTT而言,是从脚本开始执行,到脚本执行结束,是计算这段时间长度吗? 但感觉又不对,我有一个脚本,开始里面有sleep 1秒,测试得到的数据如下: Owner Start Time Threshold TPS MTT Err Rate Vusers admin 2014-11-02 11:29 00:01:00 169.1 316.84 0% 198 198个Vuser起压力,得到了169 TPS,和316 MTT 随后,去掉脚本里的sleep 1秒,测试得到的数据如下; Owner Start Time Threshold TPS MTT Err Rate Vusers admin 2014-11-02 13:29 00:01:00 166.2 8.21 0% 30 也就是使用30个Vuser起压力,也得到166 TPS,但此时变成了8 MTT 和之前的MTT相比,有了很多减少。 请问这是怎么回事?也就是想搞清楚TPS和MTT究竟是怎么计算的?和Vuser是什么关系呢? 非常感谢! |
ngrinder中对这些值的计算,都是基于原先的Grinder框架的,我们没有比较详细的这方面的文档或说明,你可以参考Grinder的文档: http://grinder.sourceforge.net/g3/statistics.html
在结果统计当中,TPS或者MTT都是针对一个test来说。比如说,下面的groovy脚本,(python的test创建也类似) test = new GTest(1, "910067312.zhan.qq.com") request = new HTTPRequest() test.record(request); 他就是通过java的instrumentation去记录在request上面调用的方法,调用一次就是一个test。 在test方法里面,会有调用,例如: HTTPResponse result = request.GET("http://localhost/serviec") result = request.POST("http://localhost/serviec") 这里对调用了一次get,一次post,你对这个脚本做validation,就会看到,最后的结果是由2个test: Tests Errors Mean Test Test Time TPS Mean Response Response Mean time to Mean time to Mean time to Time (ms) Standard response bytes per errors resolve host establish first byte Deviation length second connection (ms) Test 1 2 0 795.50 487.50 1.24 2729.00 3394.28 0 333.00 487.00 710.50 "cloudconnect.norton.com" Totals 2 0 795.50 487.50 1.24 2729.00 3394.28 0 333.00 487.00 710.50 你要是在一个test方法里面调用多个url,那就会算多个test,并且会计算他们的平均的测试时间,这样不同的url的时间可能本来就不同,评价以后就失去一些结果了。所以,比较好的方法是,针对一个url,创建一个test,例如: test = new GTest(1, "URL1") request = new HTTPRequest() test.record(request); test2 = new GTest(1, "URL2") request2 = new HTTPRequest() test2.record(request2); 这样不同的url会分开计算。
至于你测试的vuser多的时候MTT时间相差很多,这也是很有可能,毕竟对大多数系统来说,并发用户越多,服务器响应会变慢,包括连接时间、server处理时间、网络带宽等等。甚至,vuser太多也会导致agent服务器的负载,太多的线程会导致cpu频繁的切换线程空间。所以你需要通过不同的vuser,(包括不同的进程和线程数的组合),找到一个相对大致的临界点,在这个点,TPS基本上最高,再增加vuser,也没有使它增加。
最后,关于sleep时间,并不是说sleep(1)就是sleep1秒,它跟grinder的设置有关,有2个设置: grinder.sleepTimeFactor 和: grinder.sleepTimeVariation
你可以参考: http://grinder.sourceforge.net/g3/properties.html
大概的意思就是,factor设置越小,实际sleep时间越短,默认为1,就是说sleep(1)就是1秒钟,设置0.1 就是休眠0.1秒(大致的值) 第二个参数是一个变异值,就好像方差,是说sleep的时间会根据这个值呈一个分布。
-----Original Message----- If you reply to this email, your message will be added to the discussion below:
http://ngrinder.642.n7.nabble.com/TPS-MTT-tp1658.html
To start a new topic under ngrinder-user-cn, email [hidden email]
To unsubscribe from ngrinder-user-cn, click here. NAML |
Free forum by Nabble | Edit this page |