對Web進行壓力測試有很多工具, 比如Microsoft的application center test (ACT), 還有Mercury 的 LoadRunner, Apache的ab(Apache benchmark), 作為開源軟件的Siege 等。
LoadRunner是一個商業(yè)軟件,其功能非常的強大,可以自定義HTTP的頭, 訪問的URL, 以及各種訪問并發(fā)規(guī)則等.
apache的ab做重復(fù)壓力測試不錯,但是每次只能測試一個鏈接.
Siege(英文意思是圍攻)設(shè)計用于WEB開發(fā)這評估應(yīng)用在壓力下的承受能力:可以根據(jù)配置對一個WEB站點進行多用戶的并發(fā)訪問,記錄每個用戶所有請求過程的相應(yīng)時間,并在一定數(shù)量的并發(fā)訪問下重復(fù)進行。
Siege可以從http://www.joedog.org/siege/獲得, 它包含了一組壓力測試工具:
siege (1)
----------
使用樣例:
創(chuàng)建任務(wù)列表文件:www.xxx.com.url
http://www.xxx.com/a.html
http://www.xxx.com/b.html
....
siege -c 20 -r 2 -f www.chedong.com.url
參數(shù)說明:
-c 20 并發(fā)20個用戶
-r 2 重復(fù)循環(huán)2次
-f www.xxx.com.url 任務(wù)列表:URL列表
輸出樣例:
** Siege 2.59
** Preparing 20 concurrent users for battle. 這次“戰(zhàn)斗”準備了20個并發(fā)用戶
The server is now under siege.. done. 服務(wù)在“圍攻”測試中:
Transactions: 40 hits 完成40次處理
Availability: 100.00 % 成功率
Elapsed time: 7.67 secs 總共用時
Data transferred: 877340 bytes 共數(shù)據(jù)傳輸:877340字節(jié)
Response time: 1.65 secs 相應(yīng)用時1.65秒:顯示網(wǎng)絡(luò)連接的速度
Transaction rate: 5.22 trans/sec 平均每秒完成5.22次處理:表示服務(wù)器后臺處理的速度
Throughput: 114385.92 bytes/sec 平均每秒傳送數(shù)據(jù):114385.92字節(jié)
Concurrency: 8.59 最高并發(fā)數(shù) 8.59
Successful transactions: 40 成功處理次數(shù)
Failed transactions: 0 失敗處理次數(shù)
注意:由于速度很快,可能會達不到并發(fā)速度很高就已經(jīng)完成。Response time顯示的是測試機器和被測試服務(wù)器之間網(wǎng)絡(luò)鏈接狀況。Transaction rate則表示服務(wù)器端任務(wù)處理的完成速度。
為了方便增量壓力測試,siege還包含了一些輔助工具:
bombardment (1)
---------------
用于按照增量用戶壓力測試:
bombardment urlfile.txt 5 3 4 1
初始化URL列表:urlfile.txt
初始化為:5個用戶
每次增加:3個用戶
運行:4次
每個客戶端之間的延遲為:1秒
siege2csv.pl (1)
----------------
siege2csv.pl將bombardment的輸出變成CSV格式:
Time Data Transferred Response Time Transaction Rate Throughput Concurrency Code 200 (note that this is horribly broken.)
242 60.22 603064 0.02 4.02 10014.35 0.08
605 59.98 1507660 0.01 10.09 25136.05 0.12
938 59.98 2337496 0.02 15.64 38971.26 0.26
1157 60 2883244 0.04 19.28 48054.07 0.78
參考:
開源測試工具:http://www.opensourcetesting.org/performance.php