文章出處

實際的測試過程中,我們一般都是采用A、B兩臺機器,一臺跑Web服務,另外一臺跑ab測試。也有的情況是單機對單機可能測不出結果,那就要采用很多臺機器同是跑AB去請求一臺機器進行測試,根據多臺機器反饋的結果才能夠得出一個科學的測試結果。

1.APACHE ab

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

ab 不像 LR 那么強大,但是它足夠輕便,如果只是在開發過程中想檢查一下某個模塊的響應情況,或者做一些場景比較簡單的測試,ab 還是一個不錯的選擇。

1.1.  參數說明

 

-n requests

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

-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也是一樣。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()