web壓力測試工具(小而精)

實際的測試過程當中,咱們通常都是採用A、B兩臺機器,一臺跑Web服務,另一臺跑ab測試。也有的狀況是單機對單機可能測不出結果,那就要採用不少臺機器同是跑AB去請求一臺機器進行測試,根據多臺機器反饋的結果纔可以得出一個科學的測試結果。html

1.APACHE abweb

ab是Apache超文本傳輸協議(HTTP)的性能測試工具。其設計意圖是描繪當前所安裝的Apache的執行性能,主要是顯示你安裝的Apache每秒能夠處理多少個請求。算法

ab 不像 LR 那麼強大,可是它足夠輕便,若是隻是在開發過程當中想檢查一下某個模塊的響應狀況,或者作一些場景比較簡單的測試,ab 仍是一個不錯的選擇。apache

1.1.  參數說明安全

 

-n requests服務器

在測試會話中所執行的請求個數。默認僅執行一個請求,此時其結果不具備意義。cookie

-c concurrency網絡

一次產生的請求個數。默認是一次一個。併發

-t timelimit高併發

測試所進行的最大秒數。內部隱含值是"-n 50000"。它可使對服務器的測試限制在一個固定的總時間之內。默認時,沒有時間限制。

-p POST-file

包含了POST數據的文件。

-T content-type

POST數據時所使用的"Content-type"頭信息。

-v verbosity

設置顯示信息的詳細程度,4或更大值會顯示頭信息,3或更大值能夠顯示響應代碼(404,200等),2或更大值能夠顯示警告和其餘信息。

-w

以HTML表格形式輸出結果。默認時,它是白色背景的兩列寬度的一張表。

-i

執行HEAD請求,而不是GET 。

-x <table>-attributes

設置<table>屬性的字符串。此屬性被填入<table 這裏 > 。

-y <tr>-attributes

設置<tr>屬性的字符串。

-z <td>-attributes

設置<td>屬性的字符串。

-C cookie-name=value

對請求附加一個"Cookie:"頭行。其典型形式是 name=value 的一個參數對。此參數能夠重複。

-H custom-header

對請求附加額外的頭信息。此參數的典型形式是一個有效的頭信息行,其中包含了以冒號分隔的字段和值(如:"Accept-Encoding: zip/zop;8bit")。

-A auth-username:password

向服務器提供基本認證信息。用戶名和密碼之間由一個":"隔開,並將被以base64編碼形式發送。不管服務器是否須要(便是否發送了401認證需求代碼),此字符串都會被髮送。

-P proxy-auth-username:password

對一箇中轉代理提供基本認證信息。用戶名和密碼由一個":"隔開,並將被以base64編碼形式發送。不管服務器是否須要(便是否發送了407代理認證需求代碼),此字符串都會被髮送。

-X proxy[:port]

對請求使用代理服務器。

-V

顯示版本號並退出。

-k

啓用KeepAlive功能,即在一個HTTP會話中執行多個請求。默認不啓用KeepAlive功能。

-d

不顯示"percentage served within XX [ms] table"消息(爲之前的版本提供支持)。

-S

不顯示中值和標準誤差值,並且在均值和中值爲標準誤差值的1到2倍時,也不顯示警告或出錯信息。默認時,會顯示最小值/均值/最大值等數值。(爲之前的版本提供支持)

-g gnuplot-file

把全部測試結果寫入一個"gnuplot"或者TSV(以Tab分隔)文件。此文件能夠方便地導入到 Gnuplot, IDL, Mathematica, Excel中。其中的第一行爲標題。

-e csv-file

產生一個逗號分隔(CSV)文件,其中包含了處理每一個相應百分比請求(從1%到100%)所須要的相應百分比時間(以微秒爲單位)。因爲這種格式已經"二進制化",因此比"gnuplot"格式更有用。

-h

顯示使用方法的幫助信息。

1.2.  舉例

ab -c 10 -n 10 -t 30 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 2006 The Apache Software Foundation, http://www.apache.org/

 

Benchmarking www.google.com (be patient)

Finished 779 requests

 

 

Server Software:        gws

Server Hostname:        www.google.com

//服務器主機名

ServerPort:            80

//服務器端口

Document Path:          /

//測試的頁面文檔

Document Length:        458 bytes

//文檔大小

Concurrency Level:      10

//併發數

Time taken for tests:   30.87239 seconds

//整個測試持續的時間

Complete requests:      779

//完成的請求數量

Failed requests:        0

//失敗的請求數量

Write errors:           0

Non-2xx responses:      779

Total transferred:      1004131 bytes

//整個場景中的網絡傳輸量

HTML transferred:       356782 bytes

//整個場景中的HTML內容傳輸量

Requests per second:    25.89 [#/sec] (mean)

//你們最關心的指標之一,至關於 LR 中的 每秒事務數 ,後面括號中的 mean 表示這是一個平均值

Time per request:       386.229 [ms] (mean)

//你們最關心的指標之二,至關於 LR 中的 平均事務響應時間 ,後面括號中的 mean 表示這是一個平均值

Time per request:       38.623 [ms] (mean, across all concurrent requests)

//每一個請求實際運行時間的平均值

Transfer rate:          32.57 [Kbytes/sec] received

//平均每秒網絡上的流量,能夠幫助排除是否存在網絡流量過大致使響應時間延長的問題

Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:       36  167 100.1    132     735

Processing:    62  215 143.6    171     910

Waiting:       61  203 117.4    167     909

Total:         98  382 175.8    344    1243

//網絡上消耗的時間的分解,各項數據的具體算法還不是很清楚

/*下面的內容爲整個場景中全部請求的響應狀況。在場景中每一個請求都有一個響應時間,其中 50% 的用戶響應時間小於 3064 毫秒,60 % 的用戶響應時間小於 3094 毫秒,最大的響應時間小於 3184 毫秒*/

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

  50%    344

  66%    395

  75%    451

  80%    520

  90%    626

  95%    716

  98%    931

  99%    977

 100%   1243 (longest request)

 

2.webbench

webbench是有名的網站壓力測試工具,它是由Lionbridge公司(http://www.lionbridge.com)開發。它的幫助文件和文檔請到:http://home.tiscali.cz/~cz210552/webbench.html 上查看。

Webbech 能測試處在相同硬件上,不一樣服務的性能以及不一樣硬件上同一個服務的運行情況。webBech的標準測試能夠向咱們展現服務器的兩項內容:每秒鐘相應請求數 和每秒鐘傳輸數據量。webbench不但能具備便準靜態頁面的測試能力,還能對動態頁面(ASP,PHP,JAVA,CGI)進行測試的能力。還有就是 他支持對含有SSL的安全網站例如電子商務網站進行靜態或動態的性能測試。

2.1.  參數說明

 

-f –force

不等服務器回覆

-r –reload

發送從新load請求,等同於Pragma:no-cache.

-t –time

測試所進行的最大秒數。默認30。

-p –proxy

使用代理服務器

-c --clients

一次產生的請求個數。默認是1。

-9 --http09

使用http/0.9協議

-1 --http10

使用http/1.0協議

-2 –http11

使用http/1.1協議

--get

使用get請求方法

--head

使用head請求方法

--options

使用options請求方法

--trace

使用trace請求方法

-? –h –help

顯示幫助信息

-V –version

顯示程序的版本信息

2.2.  例子

webbench -c 100 -t 30 http://www.google.com/

輸出樣例:

Webbench - Simple Web Benchmark 1.5

Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

 

Benchmarking: GET http://www.google.com/

100 clients, running 30 sec.

 

Speed=4028 pages/min, 86577 bytes/sec.

Requests: 2014 susceed, 0 failed.

 

3.http_load

程序很是小,解壓後也不到100K

http_load以並行複用的方式運行,用以測試web服務器 的吞吐量與負載 。可是它不一樣於大多數壓力測試工具,它能夠以一個單一的進程運行,通常不會把客戶機搞死。還能夠測試HTTPS類的網站請求。

官網:http://www.acme.com/software/http_load/

下載地址:

wget http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz

3.1.  參數說明

 

-parallel 簡寫-p :含義是併發的用戶進程數。

-fetches 簡寫-f :含義是總計的訪問次數

-rate    簡寫-r :含義是每秒的訪問頻率

-seconds簡寫-s :含義是總計的訪問時間

3.2.  例子

http_load -p 20 -f 20 www.chedong.com.url

輸出樣例:

20 fetches, 20 max parallel, 790105 bytes, in 4.34421 seconds

//說明在上面的測試中運行了20個請求,最大的併發進程數是20,總計傳輸的數據是790105bytes,運行的時間是4.34421秒

39505.2 mean bytes/connection

//說明每一鏈接平均傳輸的數據量790105/20=39505.2

4.60383 fetches/sec, 181875 bytes/sec

//說明每秒的響應請求爲4.60383,每秒傳遞的數據爲181875 bytes/sec

msecs/connect: 305.351 mean, 3151.05 max, 146.267 min

//說明每鏈接的平均響應時間是305.351msecs,最大的響應時間3151.05msecs,最小的響應時間146.267msecs

msecs/first-response: 772.81 mean, 1555.86 max, 155.245 min

HTTP response codes:

  code 200 -- 20

//說明打開響應頁面的類型,若是403的類型過多,那可能要注意是否系統 遇到了瓶頸。

 

 

4.Siege

雖然Apache自帶一個壓力測試工具ab,可是ab的功能太簡單了,沒法模擬真實的web訪問,因此咱們要用到更增強大的web壓力測試工具——Siege。Siege(英文意思是圍攻)是一個壓力測試和評測工具,設計用於WEB開發這評估應用在壓力下的承受能力:能夠根據配置對一個WEB站點進行多用戶的併發訪問,記錄每一個用戶全部請求過程的相應時間,並在必定數量的併發訪問下重複進行。

Siege時一個開放源代碼項目:http://www.joedog.org/siege/下載:

wget ftp://sid.joedog.org/pub/siege/siege-latest.tar.gz

4.1.  參數說明

 

-cNUM

  設置併發的用戶(鏈接)數量,好比-c10,設置併發10個鏈接。默認的鏈接數量能夠到~/.siegerc中查看,指令爲concurrent = x,前面我們已經調整了默認併發鏈接爲50。

-rNUM

  (repetitions),重複數量,即每一個鏈接發出的請求數量,設置這個的話,就不須要設置-t了。對應.siegerc配置文件中的reps = x指令

-tNUM

  (time),持續時間,即測試持續時間,在NUM時間後結束,單位默認爲分,好比-t10,那麼測試時間爲10分鐘,-t10s,則測試時間爲10秒鐘。對應.siegerc中的指令爲time = x指令

-b

  (benchmark),基準測試,若是設置這個參數的話,那麼delay時間爲0。在.siegerc中我們修改成默認開啓。

-f url.txt

 (file),這是url列表文件。對應.siegerc配置文件中的file = x指令

4.2.  例子

siege -c 20 -r 20 -f www.chedong.com.url

www.chedong.com.url內容:

http://www.chedong.com/tech/

http://www.chedong.com/tech/acdsee.html

http://www.chedong.com/tech/ant.html

http://www.chedong.com/tech/apache_install.html

http://www.chedong.com/tech/awstats.html

http://www.chedong.com/tech/cache.html

http://www.chedong.com/tech/click.html

http://www.chedong.com/tech/cms.html

http://www.chedong.com/tech/compress.html

http://www.chedong.com/tech/cvs_card.html

http://www.chedong.com/tech/default.html

http://www.chedong.com/tech/dev.html

http://www.chedong.com/tech/gnu.html

輸出樣例:

Lifting the server siege… done.

Transactions:                    400 hits //完成400次處理

Availability:                 100.00 % //100.00 % 成功率

Elapsed time:                  34.61 secs //總共用時

Data transferred:               3.94 MB //共數據傳輸3.94MB

Response time:                  1.37 secs //相應用時1.37秒:顯示網絡鏈接的速度

Transaction rate:              11.56 trans/sec //平均每秒完成11.56次處理:表示服務器後臺處理的速度

Throughput:                     0.11 MB/sec //平均每秒傳送數據0.11MB

Concurrency:                   15.87 //實際最高併發數15.87

Successful transactions:         400 //成功處理次數

Failed transactions:               0 //失敗處理次數

Longest transaction:           11.13 //每次傳輸所花最長時間

Shortest transaction:           0.34 //每次傳輸所花最短期

 

 

5. 對比

輸出壓力的能力:

軟件

每秒處理數

webbench

4876

ab

4059

http_load

3148

siege

1822

從上面能夠看過,webbench 能力最強, ab 緊接着來的。其它的壓力軟件,能打出的每秒的能力差些。

功能對比

 針對一些經常使用的功能,進行了一下對比,方便咱們選擇本身合適的測試軟件。

 

自定義http頭

url列表

隨機 URL

https支持

KeepAlive

cookie支持

HTTP1.0/1支持

認證支持

時間測試壓力

webbench

 

 

 

 

 

 

yes

 

yes

ab

yes

 

 

 

yes

yes

 

yes

 

http_load

 

yes

yes

yes

 

 

 

 

yes

siege

yes

yes

yes

yes

 

 

 

 

 

注意:

1)   實際的測試過程當中,咱們通常都是採用A、B兩臺機器,一臺跑Web服務,另一臺跑ab測試。也有的狀況是單機對單機可能測不出結果,那就要採用不少臺機器同是跑AB去請求一臺機器進行測試,根據多臺機器反饋的結果纔可以得出一個科學的測試結果。作壓力測試時,該軟件自身也會消耗CPU和內存資源,爲了測試準確,請將測試軟件安裝在別的服務器上。

2)   不要測試上線以後的網站,壓垮了可很差玩。

3)   ab -n 100 -c 10 http://www.baidu.com/ ——(注意,這裏要保留 "/" 根目錄哦);webbench也是同樣。

相關文章
相關標籤/搜索