昨天,有个人问我一个问题:
TPS/Hits per Second/Throughput有什么关系(大意如此)?
他在看一本书的时候,看到里面写着“性能测试工具LoadRunner提供的throughput和点击率即TPS”,并且“吞吐量和TPS的变化呈大体一致的趋势,即一起增加”。
1. 首先这种说明是完全错误的。点击率绝对不是TPS。TPS和点击率一起增加,也只能在有点击率图的协议。有些协议是没有点击率图的,比如winsock。
举个小例子:
录制一个脚本:只是打开浏览器访问www.7dtest.com,然后就停止录制。
我把其中的cookies相关的函数都删掉了。脚本如下:
web_url(”www.7dtest.com”,
“URL=http://www.7dtest.com/”,
“Resource=0″,
“RecContentType=text/html”,
“Referer=”,
“Snapshot=t1.inf”,
“Mode=HTML”,
EXTRARES,
“Url=/wp-content/plugins/nextgen-gallery/css/nggallery.css”, ENDITEM,
“Url=/wp-content/plugins/nextgen-gallery/thickbox/thickbox.css”, ENDITEM,
“Url=/wp-content/plugins/coolplayer/coolplayer_ie.css”, ENDITEM,
“Url=http://www.google-analytics.com/ga.js”, ENDITEM,
“Url=http://www.google-analytics.com/__utm.gif?utmwv=4.5.9&utmn=1697386641&utmhn=www.7dtest.com&utmcs=utf-8&utmsr=1280×800&utmsc=32-bit&utmul=en-us&utmje=1&utmfl=10.0%20r32&utmcn=1&utmdt=7%E7%82%B9%E6%B5%8B%E8%AF%95&utmhid=213291143&utmr=-&utmp=%2F&utmac=UA-5295382-1&utmcc=__utma%3D155685693.299818519.1258940669.1258940669.1258940669.1%3B%2B__utmz%3D155685693.1258940669.1.1.utmcsr%3D(direct)%7Cutmccn%3D(direct)%7Cutmcmd%3D(none)%3B”,
ENDITEM,
“Url=/wp-content/themes/adsimple/i/smalldot.gif”, ENDITEM,
“Url=/wp-content/themes/adsimple/i/arrow.gif”, ENDITEM,
“Url=/wp-content/themes/adsimple/i/dots.gif”, ENDITEM,
“Url=/wp-content/themes/adsimple/i/toparrow2.gif”, ENDITEM,
“Url=/wp-content/themes/adsimple/i/toparrow.gif”, ENDITEM,
“Url=/wp-content/plugins/nextgen-gallery/thickbox/loadingAnimationv3.gif”, ENDITEM,
LAST);
把这个脚本加到controller中设置run-time settings:
1. 忽略思考时间;
2. 设置迭代次数为1;
3. 持续时间选择run nutil completion.
其他设置默认。
运行这个场景并打开分析器。
你可以看到如下结果。
点击率图中只有一个点5.25.
打开HTTP Responses per Second图,可以看到也只有一个点5.25.
我们知道一个http request对应一个http response,就是说如果没有http请求就不会有http响应。所以点击率和请求是对应的。
2. 吞吐量并不会一直随着TPS的增加而增加。
吞吐量的增加有很多的因素。比如应用服务器的线程数。并且有可能在线程数增加的时候吞吐量是下降的。这个具体的问题要分析一个具体的应用才能知道了。
我现在没有一个具体的例子,等有了后,我会写一个文档出来说明这一点。