標籤:style blog http color io os 使用 ar for
ab壓力測試ab是Apache超文字傳輸通訊協定 (HTTP)(HTTP)的效能測試工具。其設計意圖是描繪當前所安裝的Apache的執行效能。主要是顯示你安裝的Apache每秒可以處理多少個請求。 格式:./ab [options] [http://]hostname[:port]/path詳細文法: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 參數很多,一般我們用 -c 和 -n 參數就可以了. 例如:./ab -c 1000 -n 1000 http://127.0.0.1/index.php這個表示同時處理1000個請求並運行1000次index.php檔案.#/usr/local/xiaobai/apache2054/bin/ab -c 1000 -n 1000 http://127.0.0.1/index.html以上結果指出,在同時間 1000個聯機請求 (Concurrency Level) 的情況下,完成 1000 次的聯機請求,共花了 6.859 秒 (Time taken for tests),因此這個程式每秒平均可以處理 (Requests per second) 145.79 個聯機請求。 This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/Benchmarking 127.0.0.1 (be patient)Completed 100 requestsCompleted 200 requestsCompleted 300 requestsCompleted 400 requestsCompleted 500 requestsCompleted 600 requestsCompleted 700 requestsCompleted 800 requestsCompleted 900 requestsFinished 1000 requestsServer Software: Apache/2.0.54 //平台apache 版本2.0.54Server Hostname: 127.0.0.1 //伺服器主機名稱Server Port: 80 //伺服器連接埠Document Path: /index.html //測試的頁面文檔Document Length: 1018 bytes //文檔大小Concurrency Level: 1000 //並發數Time taken for tests: 8.188731 seconds //整個測試持續的時間Complete requests: 1000 //完成的請求數量Failed requests: 0 //失敗的請求數量Write errors: 0 Total transferred: 1361581 bytes //整個情境中的網路傳輸量HTML transferred: 1055666 bytes //整個情境中的HTML內容傳輸量//大家最關心的指標之一,相當於 每秒事務數 ,後面括弧中的 mean 表示這是一個平均值Requests per second: 122.12 [#/sec] (mean)//大家最關心的指標之二,使用者平均請求等待時間 ,後面括弧中的 mean 表示這是一個平均值Time per request: 8188.731 [ms] (mean)//這個是伺服器平均請求處理時間Time per request: 8.189 [ms] (mean, across all concurrent requests)//平均每秒網路上的流量,可以協助排除是否存在網路流量過大導致回應時間延長的問題Transfer rate: 162.30 [Kbytes/sec] receivedConnection Times (ms) min mean[+/-sd] median maxConnect: 4 646 1078.7 89 3291Processing: 165 992 493.1 938 4712Waiting: 118 934 480.6 882 4554Total: 813 1638 1338.9 1093 7785//網路上消耗的時間的分解,各項資料的具體演算法還不是很清楚Percentage of the requests served within a certain time (ms)50% 109366% 124775% 137380% 149390% 406195% 439898% 560899% 7368100% 7785 (longest request)//整個情境中所有請求的響應情況。在情境中每個請求都有一個回應時間,其中50%的使用者回應時間小於1093 毫秒,60% 的使用者回應時間小於1247 毫秒,最大的回應時間小於7785 毫秒。由於對於並發請求,cpu實際上並不是同時處理的,而是按照每個請求獲得的時間片逐個輪轉處理的,所以基本上第一個Time per request時間約等於第二個Time per request時間乘以並發請求數 /* ------------------------ 其它例子 --------------------------- */假設我們要對 echo.fcg 做測試,模擬 1000 次的聯機請求,而且同一時間有 20 個並行的 (concurrent) 聯機請求的情況,只要在命令列模式下執行(在同時間 20 個聯機請求 (Concurrency Level) 的情況下,完成 1000 次的聯機請求),共花了 6.859 秒 (Time taken for tests),因此這個程式每秒平均可以處理 (Requests per second) 145.79 個聯機請求。$ ab -n 1000 -c 20 http://localhost/fcgi-bin/echo.fcg/* ------------------------ 參數說明 --------------------------- */ -c concurrency 一次產生的請求個數。預設是一次一個。 -n requests 在測試會話中所執行的請求個數。預設僅執行一個請求,此時其結果不具有意義。 -A auth-username:password 向伺服器提供基本認證資訊。使用者名稱和密碼之間由一個":"隔開,並將被以base64編碼形式發送。無論伺服器是否需要(即是否發送了401認證需求代碼),此字串都會被發送。 -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, Excel中。其中的第一行為標題。 -h 顯示使用方法的協助資訊。 -H custom-header 對請求附加額外的頭資訊。此參數的典型形式是一個有效頭資訊行,其中包含了以冒號分隔的欄位和值(如:"Accept-Encoding: zip/zop;8bit")。 -i 執行HEAD請求,而不是GET 。 -k 啟用KeepAlive功能,即在一個HTTP會話中執行多個請求。預設不啟用KeepAlive功能。 -p POST-file 包含了POST資料的檔案。 -P proxy-auth-username:password 對一個中轉代理提供基本認證資訊。使用者名稱和密碼由一個":"隔開,並將被以base64編碼形式發送。無論伺服器是否需要(即是否發送了407代理認證需求代碼),此字串都會被發送。 -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] 對請求使用Proxy 伺服器。 -y <tr>-attributes 設定<tr>屬性的字串。 -z <td>-attributes 設定<td>屬性的字串。
ApacheBench 使用教程