apache 自帶 ab.exe 性能測試工具使用

ab的全稱是ApacheBench,是Apache附帶的一個小工具,專門用於 HTTP Server 的benchmark testing,能夠同時模擬多個併發請求。前段時間看到公司的研發人員也在用他作一些測試,看起來也不錯,很簡單,也很容易使用,所以今天花一點時間看了一下。
通過下面的一個簡單的例子和註釋,相信大家能夠更容易理解這個工具的使用。
一個簡單的例子
/*在這個例子的一開始,我執行了這樣一個命令 ab -n 10 -c 10 http://www.google.com/。這個命令的意思是啓動 ab ,向 www.google.com 發送10個請求(-n 10) ,並每次發送10個請求(-c 10)——也就是說一次都發過去了。
ab -t 60 -c 100 http://www.google.com/ 的意思是在60秒內發請求,一次100個請求。
//如果需要在url中帶參數,這樣做
ab -t 60 -c 100 -T "text/plain" -p p.txt http://127.0.0.1/hello.php
p.txt 是和ab.exe在一個目錄
p.txt 中可以寫參數,如  p=wdp&fq=78
 
 
跟着下面的是 ab 輸出的測試報告,紅色部分是我添加的註釋。*/
C:\Apache2.2\bin>ab -n 10 -c 10 http://www.google.com/
This is ApacheBench, Version 2.0.40-dev  apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 1997-2005 TheApacheSoftware 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
/*整個測試持續的時間*/
Time taken for tests:     3.234651 seconds
/*完成的請求數量*/
Complete requests:        10
/*失敗的請求數量*/
Failed requests:       0
Write errors:          0
Non-2xx responses:        10
Keep-Alive requests:    10
/*整個場景中的網絡傳輸量*/
Total transferred:        6020 bytes
/*整個場景中的HTML內容傳輸量*/
HTML transferred:       2300 bytes
/*大家最關心的指標之一,相當於 LR 中的每秒事務數,後面括號中的 mean 表示這是個平均值*/
Requests per second:    3.09 [#/sec] (mean)
/*大家最關心的指標之二,相當於 LR 中的平均事務響應時間,後面括號中的 mean 表示這是個平均值*/
Time per request:       3234.651 [ms] (mean)
/*這個還不知道是什麼意思,有知道的朋友請留言,謝謝 ^_^ */
Time per request:       323.465 [ms] (mean, across all concurrent requests)
/*平均每秒網絡上的流量,能夠幫助排除是否存在網絡流量過大導致響應時間延長的問題*/
Transfer rate:          1.55 [Kbytes/sec] received
/*網絡上消耗的時間的分解,各項數據的具體算法還不是很清楚*/
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
/*下面的內容爲整個場景中任何請求的響應情況。在場景中每個請求都有一個響應時間,其中 50%的用戶響應時間小於 3064 毫秒,60 %的用戶響應時間小於 3094 毫秒,最大的響應時間小於 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)
更多信息
ab 不像 LR 那麼強大,但是他足夠輕便,假如只是在研發過程中想檢查一下某個模塊的響應情況,或做一些場景比較簡單的測試,ab 還是個不錯的選擇——至少不用花費很多時間去學習 LR 那些複雜的功能,就更別說那 License 的價格了。
下面是 ab 的周詳參數解釋,大家有興趣的能夠研究一下。
ab [ -Aauth-username:password ] [ -cconcurrency ] [ -Ccookie-name=value ] [ -d ] [ -ecsv-file ] [ -ggnuplot-file ] [ -h ] [ -Hcustom-header ] [ -i ] [ -k ] [ -nrequests ] [ -pPOST-file ] [ -Pproxy-auth-username:password ] [ -q ] [ -s ] [ -S ] [ -ttimelimit ] [ -Tcontent-type ] [ -vverbosity] [ -V ] [ -w ] [ -x-attributes ] [ -Xproxy[:port] ] [ -y-attributes ] [ -z-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 (ab -h will show you) use the SSL protected https rather than the http protocol. This feature is experimental and very rudimentary. You probably do not want to use it.
-S
Do not display the median and standard deviation values, nor display the warning/error messages when the average and median are more than one or two times the standard deviation apart. And default to the min/avg/max values. (legacy support).
-t timelimit
ab用法:
http://blog.csdn.net/riyao/article/details/3547997

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章