標籤:style http color 使用 os io strong 檔案
優點:提供的測試結果資訊更完備;缺點:每次只能測試一個連結
概述:
ab全稱是ApacheBench,是 Apache 附帶的一個HTTP效能測試小工具,可以同時類比多個並發請求。
安裝:
Apache伺服器套件內建ab,只要安裝Apache即可,無需另行安裝ab。ab位於%ApacheHome%/bin目錄下(“%ApacheHome%”為Aapche安裝路徑),你也可以把ab.exe檔案copy出來,獨立使用。
基本使用:
訪問www.baidu.com首頁,同時處理5個並發請求,並且運行10次訪問baidu首頁。 /*效能測試需求*/
XXXXXXXX:~$ ab -n 10 -c 5 http://www.baidu.com/
/*啟動apache ab,向www.baidu.com 總共發送10個請求(-n 10),1次發送5個(-c 5),也就是說發給www.baidu.com的請求分兩批發完的。*/
操作結果:
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.baidu.com (be patient).....done
Server Software: BWS/1.0
Server Hostname: www.baidu.com
Server Port: 80
Document Path: /
Document Length: 9777 bytes
Concurrency Level: 5 /*並發數*/
Time taken for tests: 0.017 seconds /*整個測試持續的時間*/
Complete requests: 10 /*完成的請求數量*/
Failed requests: 2 /*失敗的請求數量*/
(Connect: 0, Receive: 0, Length: 2, Exceptions: 0)
Write errors: 0
Total transferred: 101688 bytes /*整個情境中的網路傳輸量*/
HTML transferred: 97786 bytes /*整個情境中的html內容傳輸量*/
/*大家最關心的指標之一,指的是吞吐率
相當於 LR 中的 每秒事務數 ,後面括弧中的 mean 表示這是一個平均值*/
Requests per second: 584.39 [#/sec] (mean) /*每秒事務數,mean表示這是一個平均值*/
/*大家最關心的指標之二,指的是使用者平均請求等待時間
相當於 LR 中的 平均事務回應時間 ,後面括弧中的 mean 表示這是一個平均值*/
Time per request: 8.556 [ms] (mean) /*每1次包含5個並發的請求時間*/
//大家最關心的指標之三,指的是伺服器平均請求處理時間
Time per request: 1.711 [ms] (mean, across all concurrent requests) /*5個並發數,其中每一個請求的時間*/
Transfer rate: 5803.22 [Kbytes/sec] received /*平均每秒網路上的流量,可以協助排除是否存在網路流量過大而導致的回應時間延長的問題*/
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 0 //網路連接狀態
Processing: 5 7 1.6 7 10 //網路處理狀態
Waiting: 4 6 1.6 6 9 //網路等待狀態
Total: 5 7 1.6 7 10 /*這4行顯示的是網路上消耗的時間的分解*/
Percentage of the requests served within a certain time (ms)
50% 7
66% 7
75% 7
80% 10
90% 10
95% 10
98% 10
99% 10
100% 10 (longest request) /*這些內容顯示的是整個情境中所有請求的響應情況,
在情境中每個請求都有一個回應時間,其中75%的使用者回應時間小於7毫秒,最大回應時間小於10毫秒*/
參數說明:
http://httpd.apache.org/docs/2.0/programs/ab.html
-A auth-username:password
向伺服器提供基本認證資訊。使用者名稱和密碼之間由一個":"隔開,並將被以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, Excel中。其中的第一行為標題。
-h
顯示使用方法的協助資訊。
-H custom-header
對請求附加額外的頭資訊。此參數的典型形式是一個有效頭資訊行,其中包含了以冒號分隔的欄位和值(如:"Accept-Encoding: zip/zop;8bit")。
-i
執行HEAD請求,而不是GET 。
-k
啟用KeepAlive功能,即在一個HTTP會話中執行多個請求。預設不啟用KeepAlive功能。
-n requests
在測試會話中所執行的請求個數。預設僅執行一個請求,此時其結果不具有意義。
-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>屬性的字串。
討論/疑問:
- Ab的啟動時間會有延時,比如設定的執行時間是5秒(-t 5),執行ab -n 1000 -c 2 -t 5 http://www.baidu.com/,那麼在執行結果內查看測試的期間則是“Time taken for tests: 7.657 seconds”。則啟動時間消耗了2秒。
- 對www.douban.com/測試,首次沒有失敗的請求,後幾次會有失敗的請求,這個可能是網站的保護機制吧?