對Web進行壓力測試有很多工具, 比如Microsoft的application center test (ACT), 還有Mercury 的 LoadRunner, Apache的ab(Apache benchmark), 作為開源軟件的Siege 等。
LoadRunner是一個商業軟件,其功能非常的強大,可以自定義HTTP的頭, 訪問的URL, 以及各種訪問并發規則等.
apache的ab做重復壓力測試不錯,但是每次只能測試一個鏈接.
Siege(英文意思是圍攻)設計用于WEB開發這評估應用在壓力下的承受能力:可以根據配置對一個WEB站點進行多用戶的并發訪問,記錄每個用戶所有請求過程的相應時間,并在一定數量的并發訪問下重復進行。
Siege可以從http://www.joedog.org/siege/獲得, 它包含了一組壓力測試工具:
siege (1)
----------
使用樣例:
創建任務列表文件: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
參數說明:
-c 20 并發20個用戶
-r 2 重復循環2次
-f www.xxx.com.url 任務列表:URL列表
輸出樣例:
** Siege 2.59
** Preparing 20 concurrent users for battle. 這次“戰斗”準備了20個并發用戶
The server is now under siege.. done. 服務在“圍攻”測試中:
Transactions: 40 hits 完成40次處理
Availability: 100.00 % 成功率
Elapsed time: 7.67 secs 總共用時
Data transferred: 877340 bytes 共數據傳輸:877340字節
Response time: 1.65 secs 相應用時1.65秒:顯示網絡連接的速度
Transaction rate: 5.22 trans/sec 平均每秒完成5.22次處理:表示服務器后臺處理的速度
Throughput: 114385.92 bytes/sec 平均每秒傳送數據:114385.92字節
Concurrency: 8.59 最高并發數 8.59
Successful transactions: 40 成功處理次數
Failed transactions: 0 失敗處理次數
注意:由于速度很快,可能會達不到并發速度很高就已經完成。Response time顯示的是測試機器和被測試服務器之間網絡鏈接狀況。Transaction rate則表示服務器端任務處理的完成速度。
為了方便增量壓力測試,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