Siege(英文意思是圍攻)是一個壓力測試和評測工具,設(shè)計用于WEB開發(fā)這評估應(yīng)用在壓力下的承受能力:可以根據(jù)配置對一個WEB站點進(jìn)行多用戶的并發(fā)訪問,記錄每個用戶所有請求過程的相應(yīng)時間,并在一定數(shù)量的并發(fā)訪問下重復(fù)進(jìn)行。
說明
ab的主要弱點在于它不能讓你模擬一個更加真實的請求分布——例如你想通過設(shè)置一個請求的列表來在這些列表之間來回測試,而siege就可以。
安裝
siege需要自己從http://www.joedog.org/上自己下載,然后編譯:
注意在configure的時候,一定要設(shè)置mandir參數(shù),否則當(dāng)你通過 man siege查看siege幫助的時候會看不到他的manual.
wget http://www.joedog.org/pub/siege/siege-3.0.5.tar.gz
tar -zxf siege-2.67.tar.gz
./configure --prefix=/usr/local/siege --mandir=/usr/local/man
make
# 轉(zhuǎn)到超級用戶
make install
安裝完成后,運行bin中的siege_config命令來創(chuàng)建.siege文件之后,你可以通過
./siege -C
命令來查看當(dāng)前配置
最簡單的使用命令:
./siege http://localhost/
#用來測試本地主頁
參數(shù)介紹
-cNUM
設(shè)置并發(fā)的用戶(連接)數(shù)量. 默認(rèn)的連接數(shù)量可以到~/.siegerc中查看,指令為concurrent = x。比如-c10,設(shè)置并發(fā)10個連接
-rNUM
(repetitions),重復(fù)數(shù)量,即每個連接發(fā)出的請求數(shù)量,設(shè)置這個的話,就不需要設(shè)置-t了。對應(yīng).siegerc配置文件中的reps = x指令
-tNUM
(time),持續(xù)時間,即測試持續(xù)時間,在NUM時間后結(jié)束,單位默認(rèn)為分,比如-t10,那么測試時間為10分鐘,-t10s,則測試時間為10秒鐘。對應(yīng).siegerc中的指令為time = x指令
-b
(benchmark),基準(zhǔn)測試,如果設(shè)置這個參數(shù)的話,那么delay時間為0。man siege中有一句話這樣說:
it's not recommanded that you use this option while load testing.
說明基準(zhǔn)測試和load testing 是完全不同的,至于有什么不同,可以閱讀BenchMarkingVSLoadTestingVSPerformance.
-f url.txt
(file),這是文件。對應(yīng).siegerc配置文件中的file = x指令
其他比較關(guān)注的測試方法,比如我想使用Keep-Alive方式進(jìn)行測試,可以在.siegerc配置文件中進(jìn)行修改,將connect = close改為 connect = keep-alive
另外您還可以通過-H HEADER參數(shù)來設(shè)置請求header。
結(jié)果說明
Lifting the server siege… done.
Transactions: 3419263 hits //完成419263次處理
Availability: 100.00 % //100.00 % 成功率
Elapsed time: 5999.69 secs //總共用時
Data transferred: 84273.91 MB //共數(shù)據(jù)傳輸84273.91 MB
Response time: 0.37 secs //相應(yīng)用時1.65秒:顯示網(wǎng)絡(luò)連接的速度
Transaction rate: 569.91 trans/sec //均每秒完成 569.91 次處理:表示服務(wù)器后
Throughput: 14.05 MB/sec //平均每秒傳送數(shù)據(jù)
Concurrency: 213.42 //實際最高并發(fā)數(shù)
Successful transactions: 2564081 //成功處理次數(shù)
Failed transactions: 11 //失敗處理次數(shù)
Longest transaction: 29.04 //每次傳輸所花最長時間
Shortest transaction: 0.00 //每次傳輸所花最短時間