基準測試 ApacheBench ab學習

ab的全稱是ApacheBench Apache 附帶的一個小工具專門用於 HTTP Server benchmark testing能夠同時模擬多個併發請求。前段時間看到公司的開發人員也在用它做一些測試,看起來也不錯,很簡單,也很容易使用,因此今天花一點時間看了一下。html

經過下面的一個簡單的例子和註釋,相信你們能夠更容易理解這個工具的使用。
進入apache的bin目錄
算法

缺點:一次只能測試一條URLapache

/*在這個例子的一開始,我執行了這樣一個命令 ab -n 10 -c 10 http://www.google.com/這個命令的意思是啓動 ab ,向 www.google.com 發送10個請求(-n 10) ,並每次發送10個請求(-c 10)——也就是說一次都發過去了。跟着下面的是 ab 輸出的測試報告,紅色部分是我添加的註釋。*/服務器

C:\Program Files\Apache Software Foundation\Apache2.2\bin>ab -n 10 -c 10 httpcookie

://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).....donegoogle

 

 

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 [ -A auth-username ] [ -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 ] [ -q ] [ -s ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [http://]hostname[:port]/path


選項

-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>屬性的字符串.

相關文章
相關標籤/搜索