天天看點

ad壓力測試

ApacheBench 是 Apache伺服器自帶的一個web壓力測試工具,簡稱ab。

ab又是一個指令行工具,對發起負載的本機要求很低,根據ab指令可以建立很多的并發通路線程,模拟多個通路者同時對某一URL位址進行通路,是以可以用來測試目标伺服器的負載壓力。

文法及參數

Usage: ab [options] [http[s]://]hostname[:port]/path

用法:ab [選項] 位址

選項:

Options are:

-n requests #執行的請求數,即一共發起多少請求。

-c concurrency #請求并發數。

-t timelimit #測試所進行的最大秒數。其内部隐含值是-n 50000,它可以使對伺服器的測試限制在一個固定的總時間以内。預設時,沒有時間限制。

-s timeout #指定每個請求的逾時時間,預設是30秒。

-b windowsize #指定tcp視窗的大小,機關是位元組。

-B address #指定在發起連接配接時綁定的ip位址是什麼。

-p postfile #指定要POST的檔案,同時要設定-T參數。

-u putfile #指定要PUT的檔案,同時要設定-T參數。

-T content-type #指定使用POST或PUT上傳文本時的文本類型,預設是'text/plain'。

-v verbosity #設定詳細模式等級。

-w #将結果輸出到html的表中。

-i #使用HEAD方式代替GET發起請求。

-y attributes #以表格方式輸出時,設定html表格tr屬性。

-z attributes #以表格方式輸出時,設定html表格th或td屬性。

-C attribute #添加cookie,比如'Apache=1234'。(可重複)

-H attribute #為請求追加一個額外的頭部,比如'Accept-Encoding: gzip'。(可重複)

-A attribute #對伺服器提供BASIC認證信任。使用者名和密碼由一個:隔開,并以base64編碼形式發送。無論伺服器是否需要(即,是否發送了401認證需求代碼),此字元串都會被發送。

-P attribute #對一個中轉代理提供BASIC認證信任。使用者名和密碼由一個:隔開,并以base64編碼形式發送。無論伺服器是否需要(即, 是否發送了401認證需求代碼),此字元串都會被發送。

-X proxy:port #指定代理伺服器的IP和端口。

-V #列印版本資訊。

-k #啟用HTTP KeepAlive功能,即在一個HTTP會話中執行多個請求。預設時,不啟用KeepAlive功能。

-d #不顯示"percentage served within XX [ms] table"的消息(為以前的版本提供支援)。

-q #如果處理的請求數大于150,ab每處理大約10%或者100個請求時,會在stderr輸出一個進度計數。此-q标記可以抑制這些資訊。

-g filename #把所有測試結果寫入一個'gnuplot'或者TSV(以Tab分隔的)檔案。此檔案可以友善地導入到Gnuplot,IDL,Mathematica,Igor甚至Excel中。其中的第一行為标題。

-e filename #産生一個以逗号分隔的(CSV)檔案,其中包含了處理每個相應百分比的請求所需要(從1%到100%)的相應百分比的(以微妙為機關)時間。由于這種格式已經“二進制化”,是以比'gnuplot'格式更有用。

-r #當收到錯誤時不要退出。

-h #輸出幫助資訊

-Z ciphersuite 指定SSL/TLS密碼套件

-f protocol 指定SSL/TLS協定(SSL3, TLS1, TLS1.1, TLS1.2 or ALL)

發起并發為10,總量為100的請求www.baidu.com,如下:

[root@jia1 ~]# ab -n 100 -c 10 http://www.baidu.com/

This is ApacheBench, Version 2.3 <$Revision: 1430300 $>

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.1

Server Hostname: www.baidu.com

Server Port: 80

Document Path: / #測試頁面

Document Length: 112439 bytes #測試頁面大小

Concurrency Level: 10 #并發數

Time taken for tests: 1.256 seconds #整個測試話費的時間

Complete requests: 100 #完成請求的總量

Failed requests: 96 #失敗的請求次數

(Connect: 0, Receive: 0, Length: 96, Exceptions: 0)

Write errors: 0

Total transferred: 11348660 bytes #傳輸資料總大小

HTML transferred: 11253726 bytes #傳輸頁面總大小

Requests per second: 79.62 [#/sec] (mean) #平均每秒請求數

Time per request: 125.593 [ms] (mean) #平均每次并發10個請求的處理時間

Time per request: 12.559 [ms] (mean, across all concurrent requests) #平均每個請求處理時間,所有并發的請求加一起

Transfer rate: 8824.29 [Kbytes/sec] received #平均每秒網絡流量

Connection Times (ms)

min mean[+/-sd] median max

Connect: 4 20 7.7 18 38

Processing: 18 90 50.5 82 356

Waiting: 4 22 7.9 22 41

Total: 22 111 50.7 101 384

#花費在連接配接Connect,處理Processing,等待Waiting的時間的最小min,平均值mean,标準差[+/-sd],中值median,最大表max的一個表。

Percentage of the requests served within a certain time (ms)

50% 101 #50%請求的響應時間在101ms内

66% 103 #66%請求的響應時間在103ms内

75% 104 #...以此類推

80% 105

90% 111

95% 267

98% 311

99% 384

100% 384 (longest request)