天天看點

mooon http-stress使用教程1. http-stress是什麼? 2. 測試結果樣本3. 配置檔案4. 測試方法5. 編譯步驟6. 後序

檔案:

mooon-http-stress-manual.pdf

大小:

248KB

下載下傳:

<a href="http://blogimg.chinaunix.net/blog/upfile2/101016004539.pdf">下載下傳</a>

http-stress是一個和ab(Apache Benchmark)類似的HTTP壓力測試工具,是作為dispatcher和http_parser等測試用的附屬應用,具備如下特性:

1) 多線程

2) 同時支援IPV4和IPV6

3) 模拟多使用者并發測試

4) 可以配置多個不同或相同的URLs

5) 可以同時對同一個域名的不同IP進行測試

6) 每秒定時輸出測試進度:成功和失敗個數

7) 長連接配接和短連接配接測試

8) 暫隻支援GET方法測試

[2010-10-15 21:11:29][0xf35bc6f0][STATE]time: 52 seconds

[2010-10-15 21:11:29][0xf35bc6f0][STATE]total number: 100000

[2010-10-15 21:11:29][0xf35bc6f0][STATE]failure number: 0

[2010-10-15 21:11:29][0xf35bc6f0][STATE]success number: 98040

[2010-10-15 21:11:29][0xf35bc6f0][STATE]percent number: 1923

[2010-10-15 21:11:29][0xf35bc6f0][STATE]bytes sent: 8600000

[2010-10-15 21:11:29][0xf35bc6f0][STATE]bytes received: 32894278

以上資訊分别為:

耗時(暫隻精确到秒,是以建議請求數不要地少)

總請求個數(每個使用者的請求數 * 使用者數)

成功請求個數

失敗請求個數

發送出去的位元組數

接收到的位元組數

需要配置兩個檔案,分别為tress.xml和route.table,tress.xml用來配置測試參數,route.table是dispatcher子產品需要的路由表。

指定消息應當發往哪,為文本檔案,由兩部分組成:首行必須為路由項個數,其餘行的格式必須滿足:路由ID\t目标IP\t目标端口,其中IP可以為IPV4或IPV6或者域名,路由ID不可以重複,其它可以重複。

另外,建議盡量避免配置域名,因為域名解析的系統調用是阻塞的,會影響測試的真實性,如果實在需要使用域名,建議在/etc/hosts中配置和IP的映射關系。

route.table檔案示例,注意是以分隔:

10

1       127.0.0.1       9999

2       127.0.0.1       9999

3       127.0.0.1       9999

4       127.0.0.1       9999

5       127.0.0.1       9999

6       127.0.0.1       9999

7       127.0.0.1       9999

8       127.0.0.1       9999

9       127.0.0.1       9999

10      127.0.0.1       9999

route.table中的每一行路由項,代表一個使用者,是以使用者數需要通過它來配置,而不能通過tress.xml配置。

路由ID取值範圍為從0到65535,可以不連續。

mk_table.sh腳本可以用來自動生成route.table,運作參數為:

并發數 目标IP  目标端口

如:sh mk_table.sh 10 127.0.0.1 9999。

定義各測試參數,示例如下:

&lt;?xml  version="1.0" encoding="gb2312"?&gt;

:日志級别,除調試外,因為設定為state級别

:線程個數

:是否為長連接配接

:分别為每個使用者發送的請求個數(注意不是總請求個數)、測試的域名、允許的最大出錯個數(超出這個數程序将退出)。

urls:需要測試的url清單

:每行一個URL,要求以“/”打頭,可以重複。

直接運作http_stress即可,不帶任何參數,但http_stress依賴libutil.so、libsys.so、libnet.so、libdispatcher.so和libhttp_parser.so這幾個庫檔案,是以運作之前需要先設定好LD_LIBRARY_PATH環境變量,如:export  LD_LIBRARY_PATH=$MOOON_HOME/lib。

在編譯http-stress之前,需要依次先編譯好基礎類庫(common-library)和公共元件(common-component)。

基礎類庫(common-library)包含util、sys、net和plugin等幾個庫,編譯步驟如下:

1) 進入基礎類庫的src目錄

2) 運作first_once.sh腳本,如:sh first_once.sh(建議這樣用,因為從SVN取下的first_once.sh沒有可執行權限,如果不為它增加可執行權限,直接./first_once.sh将報錯)。下面的操作遵循automake;

3) 運作configure,生成Makefile,如:./configure --prefix=/usr/local/mooon,其中--prefix後面為mooon的安裝目錄,必須指定

4) 編譯源檔案,運作make即可

5) 安裝,運作make install即可。基礎類庫(common-library)編譯成功後,就可以開始編譯公共元件了。

公共元件(common-component)依賴于基礎類庫(common-library),在這裡隻需要編譯dispatcher和http-parser兩個公共元件,不要嘗試去編譯其它元件,因為可能編譯通不過。公共元件編譯步驟如下:

1) 進入公共元件的src目錄

2) 運作first_once.sh腳本

3) 運作configure,注意指定--prefix參數為mooon安裝目錄

4) 進入dispatcher目錄,運作make編譯源檔案

5) dispatcher編譯成功後,運作make install安裝

6) 進入http_parser目錄,運作make編譯源檔案

7) http_parser編譯成功後,運作make install安裝。下面可以開始編譯http-stress了。

http-stress隸屬web application,編譯方法相同,分别如下:

1) 進入web application的src目錄

4) 進入http_stress目錄,運作make編譯源檔案

5) http_stress編譯成功後,運作make install安裝。

假設MOOON_HOME代表mooon的安裝目錄,則$MOOON_HOME/lib庫檔案存放目錄,$MOOON_HOME/bin為http_stress等可執行檔案存放目錄,如下所示:

mooon/

|-- bin

|   |-- http_stress

|   `-- mk_table.sh

|-- conf

|   |-- route.table

|   `-- stress.xml

|-- include

|   |-- sys

|   |-- net

|   |-- plugin

|   `-- util

|   |-- dispatcher

|   |-- http_parser

|-- lib

|   |-- libdispatcher.so

|   |-- libhttp_parser.so

|   |-- libnet.so

|   |-- libsys.so

|   |-- libutil.so

|   `-- libxtinyxml.so

`-- log

請注意,要将$MOOON_HOME/lib所在路徑加入到LD_LIBRARY_PATH中,才可以運作http_stress,否則運作時會報.so找不到錯誤。

在mooon中,http-stress是作為dispatcher和http-parser的測試工具而誕生的,因而比較粗魯簡單,在易用性和測試輸出的資料方面還有很大改進空間,歡迎動手對它進行改進并分享。

如需要任何幫助、或有任何建議、或發現任何問題,請發郵件給[email protected],謝謝!

繼續閱讀