基准测试 ApacheBench ab学习
2019獨角獸企業重金招聘Python工程師標準>>>
ab的全稱是ApacheBench,是 Apache 附帶的一個小工具,專門用于 HTTP Server 的benchmark testing,可以同時模擬多個并發請求。前段時間看到公司的開發人員也在用它作一些測試,看起來也不錯,很簡單,也很容易使用,所以今天花一點時間看了一下。
通過下面的一個簡單的例子和注釋,相信大家可以更容易理解這個工具的使用。
進入apache的bin目錄
缺點:一次只能測試一條URL
/*在這個例子的一開始,我執行了這樣一個命令 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 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 [ -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>屬性的字符串.
轉載于:https://my.oschina.net/shunshun/blog/61530
總結
以上是生活随笔為你收集整理的基准测试 ApacheBench ab学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下,C++编程论坛题目抽取
- 下一篇: fedora 16 面部显示