ab 的全稱是ApacheBench,是 Apache 附帶的一個小工具,專門用於 HTTP Server 的benchmark testing,能夠同時模擬多個併發請求。前段時間看到公司的開發人員也在用它做一些測試,看起來也不錯,很簡單,也很容易使用,因此今天花一點時間看 了一下。html
經過下面的一個簡單的例子和註釋,相信你們能夠更容易理解這個工具的使用。 一個簡單的例子 /* 在這個例子的一開始,我執行了這樣一個命令 ab -n 10 -c 10 http://www.google.com/(不要忘了最後一個'/')。這個命令的意思是啓動 ab ,向 www.google.com 發送10個請求(-n 10) ,並每次發送10個請求(-c 10)——也就是說一次都發過去了。跟着下面的是 ab 輸出的測試報告。*/ C:\wamp\bin\apache\Apache2.2.11\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 /*整個測試持續的時間*/ 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是Apache 超文本傳輸協議(HTTP)的性能測試工具。 其設計意圖是描繪當前所安裝的Apache的執行性能, 主要是顯示你安裝的Apache每秒能夠處理多少個請求。 選項 -A auth-username:password 對 服務器提供BASIC認證信任。 用戶名和密碼由一個:隔開,並以base64編碼形式發送。 不管服務器是否須要(即, 是否發送了401認證需求代碼),此字符串都會被髮送。 -c concurrency 一次產生的請求個數。默認是一次一個。 -C cookie-name=value 對請求附加一個Cookie:行。 其典型形式是name=value的一個參數對。 此參數能夠重複。 -d 不 顯示"percentage served within XX [ms] table"的消息(爲之前的版本提供支持)。 -e csv-file 產生一個以逗號分隔的(CSV)文件, 其中包含了處理每一個相應百分比的請求所須要(從1%到100%)的相應百分比的(以微妙爲單位)時間。 因爲這種格式已經「二進制化」,因此比'gnuplot'格式更有用。 -g gnuplot-file 把全部測試結果寫入一個 'gnuplot'或者TSV (以Tab分隔的)文件。 此文件能夠方便地導入到Gnuplot, IDL, Mathematica, Igor甚至Excel中。 其中的第一行爲標題。 -h 顯示使用方法。 -H custom-header 對請求附加額外 的頭信息。 此參數的典型形式是一個有效的頭信息行,其中包含了以冒號分隔的字段和值的對 (如, "Accept-Encoding: zip/zop;8bit"). -i 執行HEAD請求,而不是GET。 -k 啓用HTTP KeepAlive功能,即, 在一個HTTP會話中執行多個請求。 默認時,不啓用KeepAlive功能. -n requests 在測試會話中所執行的請求個數。 默認時,僅執行一個請求,但一般其結果不具備表明意義。 -p POST-file 包含了須要POST的數據的文件. -P proxy-auth-username:password 對一箇中轉代理提供BASIC認證信任。 用戶名和密碼由一個:隔開,並以base64編碼形式發送。 不管服務器是否須要(即, 是否發送了401認證需求代碼),此字符串都會被髮送。 -q 如 果處理的請求數大於150, ab每處理大約10%或者100個請求時,會在stderr輸出一個進度計數。 此-q標記能夠抑制這些信息。 -s 用 於編譯中(ab -h會顯示相關信息)使用了SSL的受保護的https, 而不是http協議的時候。此功能是實驗性的,也是很簡陋的。最好不要用。 -S 不 顯示中值和標準背離值, 並且在均值和中值爲標準背離值的1到2倍時,也不顯示警告或出錯信息。 默認時,會顯示 最小值/均值/最大值等數值。(爲之前的版本提供支持). -t timelimit 測試所進行的最大秒數。其內部隱含值是-n 50000。 它可使對服務器的測試限制在一個固定的總時間之內。默認時,沒有時間限制。 -T content-type POST數據 所使用的Content-type頭信息。 -v verbosity 設置顯示信息的詳細程度 - 4或更大值會顯示頭信息, 3或更大值能夠顯示響應代碼(404, 200等), 2或更大值能夠顯示警告和其餘信息。 -V 顯示版本號並退出。 -w 以 HTML表的格式輸出結果。默認時,它是白色背景的兩列寬度的一張表。 -x <table>-attributes 設 置<table>屬性的字符串。 此屬性被填入<table 這裏 >. -X proxy[:port] 對請求 使用代理服務器。 -y <tr>-attributes 設置<tr>屬性的字符串. -z <td>-attributes 設置<td>屬性的字符串. 缺陷 程序中有各類靜態聲明的固定長 度的緩衝區。 另外,對命令行參數、服務器的響應頭和其餘外部輸入的解析也很簡單,這可能會有不良後果。 它沒有完整地實現 HTTP/1.x; 僅接受某些'預想'的響應格式。 strstr(3)的頻繁使用可能會帶來性能問題,即, 你多是在測試ab而不是服務器的性能。 相 關連接 ab 是 Apache 的一個安裝組件,因此須要下載 Apache 安裝後才能使用,能夠訪問 Apache 的項目主頁來下載 http://httpd.apache.org/download.cgi ab 的更多信息能夠參加 Apache 主頁上的描述 http://httpd.apache.org/docs/2.0/programs/ab.html 如下是ab的使用幫助: Usage: ab [options] [http://]hostname[:port]/path Options are: -n requests Number of requests to perform -c concurrency Number of multiple requests to make -t timelimit Seconds to max. wait for responses -b windowsize Size of TCP send/receive buffer, in bytes -p postfile File containing data to POST. Remember also to set -T -T content-type Content-type header for POSTing, eg. 'application/x-www-form-urlencoded' Default is 'text/plain' -v verbosity How much troubleshooting info to print -w Print out results in HTML tables -i Use HEAD instead of GET -x attributes String to insert as table attributes -y attributes String to insert as tr attributes -z attributes String to insert as td or th attributes -C attribute Add cookie, eg. 'Apache=1234. (repeatable) -H attribute Add Arbitrary header line, eg. 'Accept-Encoding: gzip' Inserted after all normal header lines. (repeatable) -A attribute Add Basic WWW Authentication, the attributes are a colon separated username and password. -P attribute Add Basic Proxy Authentication, the attributes are a colon separated username and password. -X proxy:port Proxyserver and port number to use -V Print version number and exit -k Use HTTP KeepAlive feature -d Do not show percentiles served table. -S Do not show confidence estimators and warnings. -g filename Output collected data to gnuplot format file. -e filename Output CSV file with percentages served -r Don't exit on socket receive errors. -h Display usage information (this message)