壓力測試工具siege的用法
Siege是一款高性能的Http壓力測試工具。
Siege支持身份驗證、cookies、http、https和ftp協議。
支持多鏈接,支持get和post請求,可以對web系統進行多並發下持續請求的壓力測試。
安裝方法一:
登錄官網http://download.joedog.org/siege/挑選版本
cd /usr/local/src wget http://download.joedog.org/siege/siege-4.0.4.tar.gz tar -zxvf siege-4.0.4.tar.gz cd siege-4.0.4/ ./configure --prefix=/usr/local/siege make && make install #將命令加入全局 ln -s /usr/local/siege/bin/siege /usr/bin/siege
安裝方法二:
#wget http://www.joedog.org/pub/siege/siege-latest.tar.gz #tar -xzvf siege-latest.tar.gz #./configure; make #make install
Siege命令常用參數
-c 200 指定並發數200
-r 5 指定測試的次數5
-f urls.txt 制定url的文件
-i internet系統,隨機發送url
-b 請求無需等待 delay=0
-t 5 持續測試5分鍾
# -r和-t一般不同時使用
命令參數
| 參數 | 描述 |
|---|---|
| -V, --version | 打印版本號 |
| -h, --help | 打印幫助信息 |
| -C, --config | 打印當前配置信息 |
| -g, --get | 拉取http頭信息 |
| -p, --print | 打印整個頁面的內容 |
| -c, --concurrent=NUM | 並發用戶數量,默認10個 |
| -r, --reps=NUM | 運行次數 |
| -d, --delay=NUM | 隨機時間延遲(秒) |
| -b, --benchmark | 請求沒有延遲 |
| -i, --internet | 模擬網絡用戶隨機點擊URL |
| -f, --file=FILE | 選擇指定的URL文件 |
| -R, --rc=FILE | 指定siegerc文件 |
| -l, --log[=FILE] | 日志文件,默認是 PREFIX/var/siege.log |
| -H, --header="text" | 給請求添加頭,支持多個 |
| -A, --user-agent="text" | 給請求設置User-Agent |
| -T, --content-type="text" | 給請求設置Content-Type |
性能參數
| 參數 | 描述 |
|---|---|
| Transactions | 命中次數 |
| Availability | 命中率 |
| Elapsed time | 整個壓測花費的時間,從第一個開始到最后一個結束 |
| Data transferred | 整個壓測數據傳輸的總和 |
| Response time | 響應時間是響應每個模擬用戶請求所花費的平均時間 |
| Transaction rate | 事務速率是服務器每秒能夠處理的平均事務數. 簡而言之:事務除以經過的時間。 |
| Throughput | 吞吐量是從服務器到所有模擬用戶每秒傳輸的平均字節數 |
| Concurrency | 並發是同時連接的平均數,這是一個隨服務器性能下降而上升的數字。 |
| Successful transactions | 成功事務次數 |
| Failed transactions | 失敗事務次數 |
| Longest transaction | 最長事務時間 |
| Shortest transaction | 最短事務時間 |
常用的siege命令舉例
# 200個並發對http://www.google.com發送請求100次
siege -c 200 -r 100 http://www.google.com

Siege輸出結果說明
Transactions: 總共測試次數
Availability: 成功次數百分比
Elapsed time: 總共耗時多少秒
Data transferred: 總共數據傳輸
Response time: 等到響應耗時
Transaction rate: 平均每秒處理請求數
Throughput: 吞吐率
Concurrency: 最高並發
Successful transactions: 成功的請求數
Failed transactions: 失敗的請求數
# 在urls.txt中列出所有的網址
siege -c 200 -r 100 -f urls.txt
# 隨機選取urls.txt中列出所有的網址
siege -c 200 -r 100 -f urls.txt -i
# delay=0,更准確的壓力測試,而不是功能測試
siege -c 200 -r 100 -f urls.txt -i -b
siege -c1 -r1 "http://192.168.16.101:6005/bpm/processInstances/review PUT <./1.json "
#支持多個Header參數
siege -c10 -r1 -p --header="Authorization: Bearer b7c75bae-9d68-4a74-bffb-95eb08a40918" --header="sg: 123456"
# 指定http請求頭 文檔類型
siege -H "Content-Type:application/json" -c 200 -r 100 -f urls.txt -i -b
Siege使用的一些總結
1、發送post請求時,url格式為:http://www.xxxx.com/ POST p1=v1&p2=v2
2、如果url中含有空格和中文,要先進行url編碼,否則siege發送的請求url不准確
添加
3、siege -C 可以查看相關的配置參數,可以自行修改,比如是否顯示log,超時時間
4、如果要支持https,需要先下載安裝openssl,
下載地址https://github.com/openssl/openssl
4.1 開始安裝openssl
git clone https://github.com/openssl/openssl cd openssl ./config --prefix=/usr/local/openssl make make install openssl version
4.2 安裝siege
tar zxvf siege-4.0.4.tar.gz cd siege-4.0.4 make clean ./configure --prefix=/usr/local/siege --with-ssl=/usr/local/openssl make make install
siege安裝完畢
注意:siege默認只支持255個並發數,可以自己自定義,修改/root/.siege/siege.conf下的limit數值。
參考資料:
