brew install siege? 搞定
siege使用說明
壓測前的準(zhǔn)備工作
當(dāng)我們需要模擬大并發(fā)情況下的壓測笔喉,則需要開啟數(shù)量可觀的線程膳音,以及要占用大量的文件描述符嫉晶,而系統(tǒng)默認(rèn)對能夠使用的文件描述符數(shù)量做了限制叶洞。首先使用ulimit -a命令查看目前系統(tǒng)開啟的文件描述符數(shù)量
可以看到目前系統(tǒng)允許使用的文件描述符的數(shù)量為 256余掖,這是遠(yuǎn)遠(yuǎn)不夠的寸爆。如果不修改該參數(shù),要是進(jìn)行大量并發(fā)的模擬場景時則會報TOO MANY FILES OPEN錯誤盐欺。為此我們可以先使用ulimit -n 10000命令來調(diào)大系統(tǒng)可打開的文件描述符數(shù)量赁豆。
二、常用壓測命令介紹
下面列舉出了一些siege的常用命令:
-C, --config在屏幕上打印顯示出當(dāng)前的配置,配置是包括在他的配置文件$HOME/.siegerc中,可以編輯里面的參數(shù),這樣每次siege 都會按照它運行.
-v, --verbose運行時能看到詳細(xì)的運行信息.
-c, --concurrent=NUM模擬有n個用戶在同時訪問,n不要設(shè)得太大,因為越大,siege消耗本地機(jī)器的資源越多.
-r, --reps=NUM重復(fù)運行測試n次,不能與-t同時存在
-t, --time=NUMm持續(xù)運行siege ‘n’秒(如10S),分鐘(10M),小時(10H)
-d, --delay=NUM每個url之間的延遲,在0-n之間.
-b, --benchmark請求無需等待 delay=0.
-i, --internet隨機(jī)訪問urls.txt中的url列表項.
-f, --file=FILE指定用特定的urls文件運行 ,默認(rèn)為urls.txt,位于siege安裝目錄下的etc/urls.txt
-R, --rc=FILE指定用特定的siege 配置文件來運行,默認(rèn)的為$HOME/.siegerc
-l, --log[=FILE]運行結(jié)束,將統(tǒng)計數(shù)據(jù)保存到日志文件中siege .log,一般位于/usr/local/var/siege .log中,也可在.siegerc中自定義
小試牛刀
做好了前面的準(zhǔn)備工作冗美,我們便可以使用siege進(jìn)行壓測的實踐魔种,就拿我們經(jīng)常訪問的百度來做一個測試,在命令行中執(zhí)行下面的命令
測試過程
測試結(jié)果
這些測試結(jié)果中的項目含義分別為:
? ? Transactions <———> 總共測試次數(shù)
? ? Availability <———> 成功次數(shù)百分比
? ? Elapsed time <———> 總共耗時多少秒
? ? Data transferred <———> 總共數(shù)據(jù)傳輸
? ? Response time <———> 等到響應(yīng)耗時
? ? Transaction rate <———> 平均每秒處理請求數(shù)
? ? Throughput <———> 吞吐率
? ? Concurrency <———> 最高并發(fā)
? ? Successful transactions <———> 成功的請求數(shù)
? ? Failed transactions <———> 失敗的請求數(shù)
? ? Longest transaction <———> 每次傳輸所花最長時間
? ? Shortest transaction <———> 每次傳輸所花最短時
常用測試命令的總結(jié)
# 200個并發(fā)對百度發(fā)送請求100次
siege -c 200 -r 100 http://www.baidu.com
# 對urls.txt中列出所有的網(wǎng)址進(jìn)行壓測
siege -c 200 -r 100 -f urls.txt
# 隨機(jī)選取urls.txt中列出的網(wǎng)址,按照100*100的并發(fā)度進(jìn)行測試
siege -c 100 -r 100 -f urls.txt -i
# 指定http請求頭 文檔類型
siege -H "Content-Type:application/json" -c 200 -r 100 -f urls.txt -i -b
# 發(fā)送post請求粉洼,在網(wǎng)址后添加POST說明节预,并且緊跟參數(shù)在其后
siege -c 100 -r 100 http://www.baidu.com/ POST k1=v1&k2=v2
需要注意的是,如果地址和參數(shù)中含有中文或非ASCII字符時属韧,首先需要對這些字符進(jìn)行url編碼安拟,這樣才可正確的進(jìn)行測試。