檔案:
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。
定義各測試參數,示例如下:
<?xml version="1.0" encoding="gb2312"?>
:日志級别,除調試外,因為設定為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],謝謝!