前言
Siege 是一個(gè)回歸測(cè)試和基準(zhǔn)測(cè)試的程序. 它旨在讓開發(fā)人員在壓力下測(cè)試性能, 了解系統(tǒng)的承受能力.
Siege 支持 HTTP、HTTPS 協(xié)議.
Siege 可以配置一定數(shù)量的客戶端并發(fā)訪問(wèn)服務(wù)器.
注意: 由于Siege依賴于Microsoft不支持的POSIX.1b功能, 不支持 windows 平臺(tái)
安裝
系統(tǒng)環(huán)境: Mac OS
安裝 openssl , 不需要 https 的可以繞過(guò)當(dāng)前步驟
下載地址:https://github.com/openssl/openssl
git clone https://github.com/openssl/openssl
cd openssl
./config --prefix=/usr/local/openssl
make
make install
openssl version
安裝 Siege
下載地址:http://download.joedog.org/siege/siege-4.0.4.tar.gz
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 默認(rèn)只支持255個(gè)并發(fā)數(shù)癞松,可以自己自定義煮甥,修改 ~/.siege/siege.conf 下的 limit 數(shù)值。
注意: 在用戶目錄下的 .bash_profile 中的末尾加入 ulimit -n 2000 , 保存后再執(zhí)行 source ~/.bash_profile 即可
命令參數(shù)
參數(shù) | 描述 |
---|---|
-V, --version | 打印版本號(hào) |
-h, --help | 打印幫助信息 |
-C, --config | 打印當(dāng)前配置信息 |
-g, --get | 拉取http頭信息 |
-p, --print | 打印整個(gè)頁(yè)面的內(nèi)容 |
-c, --concurrent=NUM | 并發(fā)用戶數(shù)量瓷炮,默認(rèn)10個(gè) |
-r, --reps=NUM | 運(yùn)行次數(shù) |
-t, --time=NUMm | 在選定的時(shí)間段內(nèi)運(yùn)行測(cè)試 格式為“NUMm”肩刃,其中NUM是時(shí)間單位豁护,“m”修飾符是S挺份、M或H褒翰,分別表示秒、分鐘和小時(shí)匀泊。 例如: -t3600S优训,-t60M,-t1H |
-d, --delay=NUM | 每個(gè)模擬請(qǐng)求在1-N之間隨機(jī)延遲秒數(shù). |
-b, --benchmark | 基準(zhǔn)測(cè)試, 請(qǐng)求沒(méi)有延遲 |
-i, --internet | 模擬網(wǎng)絡(luò)用戶隨機(jī)點(diǎn)擊URL此選項(xiàng)與配置文件一起使用各聘,該文件是包含許多URL的文件揣非。 使用此選項(xiàng),每個(gè)用戶每次點(diǎn)擊服務(wù)器時(shí)都會(huì)隨機(jī)點(diǎn)擊文件中的任何URL躲因。 |
-f, --file=FILE | 選擇指定的URL文件 默認(rèn)文件地址是 SIEGE_HOME/etc/urls.txt |
-R, --rc=FILE | 指定siegerc文件 |
-l, --log[=FILE] | 日志文件妆兑,默認(rèn)是 PREFIX/var/siege.log |
-H, --header="text" | 給請(qǐng)求添加頭,支持多個(gè) |
-A, --user-agent="text" | 給請(qǐng)求設(shè)置User-Agent |
-T, --content-type="text" | 給請(qǐng)求設(shè)置Content-Type |
性能參數(shù)
參數(shù) | 描述 |
---|---|
Transactions | 事務(wù)命中次數(shù) 案例: -c10 -r2 , 總共20個(gè)命中次數(shù) 因?yàn)樽裱臑g覽器規(guī)范, 所以如果目標(biāo)頁(yè)面有多個(gè)請(qǐng)求, 那么統(tǒng)計(jì)次數(shù)會(huì)超過(guò)預(yù)定的數(shù)值 |
Availability | 服務(wù)器成功處理的套接字連接的百分比 |
Elapsed time | 整個(gè)測(cè)試持續(xù)的時(shí)間毛仪,從第一個(gè)開始到最后一個(gè)結(jié)束 |
Data transferred | 整個(gè)測(cè)試傳輸數(shù)據(jù)的總和 (包括標(biāo)題信息以及內(nèi)容) |
Response time | 每個(gè)請(qǐng)求所花費(fèi)的平均響應(yīng)時(shí)間。 |
Transaction rate | 簡(jiǎn)而言之芯勘,服務(wù)器每秒能夠處理的平均事務(wù)數(shù):事務(wù)命中次數(shù)除以持續(xù)的時(shí)間箱靴。Transactions / Elapsed time |
Throughput | 吞吐量是從服務(wù)器到所有請(qǐng)求用戶每秒傳輸?shù)钠骄止?jié)數(shù) |
Concurrency | 平均同時(shí)連接數(shù),該數(shù)量隨著服務(wù)器性能下降而增加荷愕。 |
Successful transactions | 成功事務(wù)次數(shù) |
Failed transactions | 失敗事務(wù)次數(shù) |
Longest transaction | 最長(zhǎng)事務(wù)時(shí)間 |
Shortest transaction | 最短事務(wù)時(shí)間 |
應(yīng)用舉例
1.基礎(chǔ)應(yīng)用
siege -c10 -r1 url
2.支持 header 參數(shù)
siege -c10 -r1 -p --header="Authorization: Bearer b7c75bae-9d68-4a74-bffb-95eb08a40918" --header="sg: 123456"
3.支持 application/json 方式請(qǐng)求
siege -c1 -r1 "[http://192.168.16.101:6005/bpm/processInstances/review](http://192.168.16.101:6005/bpm/processInstances/review) PUT <./1.json "
4.支持從文件讀取url
siege -c9 -r1 -f url.txt