qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          開(kāi)源性能測(cè)試工具-Apache ab介紹

            引子

            按照原定計(jì)劃,今天開(kāi)始研究 JMeter,一天的時(shí)間看完了大半的 User Manual,發(fā)現(xiàn)原來(lái)只要沉住氣,學(xué)習(xí)效率還是蠻高的,而且大堆的英文文檔也沒(méi)有那么可怕。

            本來(lái)想順便把文檔翻譯一下,不過(guò)后來(lái)想了想,看懂是一回事,全部翻譯出來(lái)又是另外一回事了,工作量太大,而且這也不是我一開(kāi)始要研究 JMeter 的本意。不如大家有興趣一起研究的遇到問(wèn)題再一起討論吧。

            開(kāi)源工具通常都是為了某個(gè)特定的目的而開(kāi)發(fā)出來(lái)的,所以如果想找到一個(gè)開(kāi)源的性能測(cè)試工具去與LoadRunner 或者 QALoad 之類去比較,實(shí)在有些勉強(qiáng)。但是開(kāi)源工具也有它自己的優(yōu)勢(shì):小巧、輕便,在自己擅長(zhǎng)的領(lǐng)域可以提供優(yōu)秀的解決方案。所以,我們可以考慮準(zhǔn)備一個(gè)自己的“開(kāi) 源測(cè)試工具箱”,平時(shí)利用空閑時(shí)間了解各種工具所適用的環(huán)境和目的,知識(shí)慢慢積累下來(lái)以后,就可以在遇到問(wèn)題時(shí)順手拈來(lái),輕松化解。

            另外,如果8月份和9月份的空閑時(shí)間足夠多,我想我會(huì)寫一個(gè)系列文章來(lái)講述在實(shí)際的開(kāi)發(fā)和測(cè)試過(guò)程中引入開(kāi)源性能測(cè)試工具的情況。如果有朋友感興趣,希望大家可以一起研究和討論。

            簡(jiǎn)介

            ab的全稱是ApacheBench,是 Apache 附帶的一個(gè)小工具,專門用于 HTTP Server 的benchmark testing,可以同時(shí)模擬多個(gè)并發(fā)請(qǐng)求。前段時(shí)間看到公司的開(kāi)發(fā)人員也在用它作一些測(cè)試,看起來(lái)也不錯(cuò),很簡(jiǎn)單,也很容易使用。

            通過(guò)下面的一個(gè)簡(jiǎn)單的例子和注釋,相信大家可以更容易理解這個(gè)工具的使用。

            一個(gè)簡(jiǎn)單的例子

            在這個(gè)例子的一開(kāi)始,我執(zhí)行了這樣一個(gè)命令 ab -n 10 -c 10 http://www.google.com/

            這個(gè)命令的意思是啟動(dòng) ab ,模擬10個(gè)用戶(-n 10)同時(shí)訪問(wèn) www.google.com ,并迭代10次(-c 10)。跟著下面的是 ab 輸出的測(cè)試報(bào)告,紅色部分是我添加的注釋。

          /*在這個(gè)例子的一開(kāi)始,我執(zhí)行了這樣一個(gè)命令ab -n 10 -c 10http://www.google.com/這個(gè)命令的意思是啟動(dòng) ab ,向www.google.com發(fā)送10個(gè)請(qǐng)求(-n 10) ,并每次發(fā)送10個(gè)請(qǐng)求(-c 10)——也就是說(shuō)一次都發(fā)過(guò)去了。跟著下面的是 ab 輸出的測(cè)試報(bào)告,紅色部分是我添加的注釋。*/

          C:\Program Files\Apache Software Foundation\Apache2.2\bin>ab -n 10 -c 10 http://www.google.com/

          This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0

          Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

          Copyright 1997-2005 The Apache Software Foundation, http://www.apache.org/

           

          Benchmarking www.google.com (be patient).....done

           

          Server Software:        GWS/2.1

          Server Hostname:        www.google.com

          Server Port:            80

           

          Document Path:          /

          Document Length:        230 bytes

           

          Concurrency Level:      10

          /*整個(gè)測(cè)試持續(xù)的時(shí)間*/

          Time taken for tests:   3.234651 seconds

          /*完成的請(qǐng)求數(shù)量*/

          Complete requests:      10

          /*失敗的請(qǐng)求數(shù)量*/

          Failed requests:        0

          Write errors:           0

          Non-2xx responses:      10

          Keep-Alive requests:    10

          /*整個(gè)場(chǎng)景中的網(wǎng)絡(luò)傳輸量*/

          Total transferred:      6020 bytes

          /*整個(gè)場(chǎng)景中的HTML內(nèi)容傳輸量*/

          HTML transferred:       2300 bytes

          /*大家最關(guān)心的指標(biāo)之一,相當(dāng)于 LR 中的每秒事務(wù)數(shù),后面括號(hào)中的 mean 表示這是一個(gè)平均值*/

          Requests per second:    3.09 [#/sec] (mean)

          /*大家最關(guān)心的指標(biāo)之二,相當(dāng)于 LR 中的平均事務(wù)響應(yīng)時(shí)間,后面括號(hào)中的 mean 表示這是一個(gè)平均值*/

          Time per request:       3234.651 [ms] (mean)

          /*這個(gè)還不知道是什么意思,有知道的朋友請(qǐng)留言,謝謝 ^_^ */

          Time per request:       323.465 [ms] (mean, across all concurrent requests)

          /*平均每秒網(wǎng)絡(luò)上的流量,可以幫助排除是否存在網(wǎng)絡(luò)流量過(guò)大導(dǎo)致響應(yīng)時(shí)間延長(zhǎng)的問(wèn)題*/

          Transfer rate:          1.55 [Kbytes/sec] received

          /*網(wǎng)絡(luò)上消耗的時(shí)間的分解,各項(xiàng)數(shù)據(jù)的具體算法還不是很清楚*/

          Connection Times (ms)

                        min  mean[+/-sd] median   max

          Connect:       20  318 926.1     30    2954

          Processing:    40 2160 1462.0   3034    3154

          Waiting:       40 2160 1462.0   3034    3154

          Total:         60 2479 1276.4   3064    3184

           

          /*下面的內(nèi)容為整個(gè)場(chǎng)景中所有請(qǐng)求的響應(yīng)情況。在場(chǎng)景中每個(gè)請(qǐng)求都有一個(gè)響應(yīng)時(shí)間,其中 50% 的用戶響應(yīng)時(shí)間小于 3064 毫秒,60 % 的用戶響應(yīng)時(shí)間小于 3094 毫秒,最大的響應(yīng)時(shí)間小于 3184 毫秒*/

          Percentage of the requests served within a certain time (ms)

            50%   3064

            66%   3094

            75%   3124

            80%   3154

            90%   3184

            95%   3184

            98%   3184

            99%   3184

           100%   3184 (longest request)

            在這個(gè)例子的一開(kāi)始,我執(zhí)行了這樣一個(gè)命令 ab -n 10 -c 10http://www.google.com/

            這個(gè)命令的意思是啟動(dòng) ab ,模擬10個(gè)用戶(-n 10)同時(shí)訪問(wèn)www.google.com,并迭代10次(-c 10)。跟著下面的是 ab 輸出的測(cè)試報(bào)告,紅色部分是我添加的注釋。

          更多信息

            ab 不像 LR 那么強(qiáng)大,但是它足夠輕便,如果只是在開(kāi)發(fā)過(guò)程中想檢查一下某個(gè)模塊的響應(yīng)情況,或者做一些場(chǎng)景比較簡(jiǎn)單的測(cè)試,ab 還是一個(gè)不錯(cuò)的選擇——至少不用花費(fèi)很多時(shí)間去學(xué)習(xí) LR 那些復(fù)雜的功能,就更別說(shuō)那 License 的價(jià)格了。

            下面是 ab 的詳細(xì)參數(shù)解釋。

          ab [ -A auth-username:password ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username:password ] [ -q ] [ -s ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [http://]hostname[:port]/path

          -A auth-username:password

          Supply BASIC Authentication credentials to the server. The username and password are separated by a single : and sent on the wire base64 encoded. The string is sent regardless of whether the server needs it (i.e., has sent an 401 authentication needed).

          -c concurrency

          Number of multiple requests to perform at a time. Default is one request at a time.

          -C cookie-name=value

          Add a Cookie: line to the request. The argument is typically in the form of a name=value pair. This field is repeatable.

          -d

          Do not display the "percentage served within XX [ms] table". (legacy support).

          -e csv-file

          Write a Comma separated value (CSV) file which contains for each percentage (from 1% to 100%) the time (in milliseconds) it took to serve that percentage of the requests. This is usually more useful than the 'gnuplot' file; as the results are already 'binned'.

          -g gnuplot-file

          Write all measured values out as a 'gnuplot' or TSV (Tab separate values) file. This file can easily be imported into packages like Gnuplot, IDL, Mathematica, Igor or even Excel. The labels are on the first line of the file.

          -h

          Display usage information.

          -H custom-header

          Append extra headers to the request. The argument is typically in the form of a valid header line, containing a colon-separated field-value pair (i.e., "Accept-Encoding: zip/zop;8bit").

          -i

          Do HEAD requests instead of GET.

          -k

          Enable the HTTP KeepAlive feature, i.e., perform multiple requests within one HTTP session. Default is no KeepAlive.

          -n requests

          Number of requests to perform for the benchmarking session. The default is to just perform a single request which usually leads to non-representative benchmarking results.

          -p POST-file

          File containing data to POST.

          -P proxy-auth-username:password

          Supply BASIC Authentication credentials to a proxy en-route. The username and password are separated by a single : and sent on the wire base64 encoded. The string is sent regardless of whether the proxy needs it (i.e., has sent an 407 proxy authentication needed).

          -q

          When processing more than 150 requests, ab outputs a progress count on stderr every 10% or 100 requests or so. The -q flag will suppress these messages.

          -s

          When compiled in
            1

          posted on 2012-04-18 10:57 順其自然EVO 閱讀(279) 評(píng)論(0)  編輯  收藏 所屬分類: jmeter and badboy

          <2012年4月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 茌平县| 铁岭市| 大余县| 灯塔市| 米林县| 汨罗市| 奉贤区| 道孚县| 得荣县| 锦屏县| 通化县| 扶沟县| 桃园县| 景宁| 延边| 茂名市| 沁阳市| 龙里县| 阳山县| 上饶县| 威海市| 大同县| 疏勒县| 长寿区| 张家界市| 新郑市| 巍山| 邛崃市| 富川| 古丈县| 清原| 信阳市| 甘肃省| 镇赉县| 屯昌县| 榆林市| 福安市| 莱州市| 阿城市| 通榆县| 繁昌县|