=================
Alex是基于vegeta library和boom封裝的壓力測(cè)試web UI。Vegeta提供穩(wěn)定的qps壓力源懦窘,boom提供穩(wěn)定的并發(fā)數(shù)壓力源。
github地址 https://github.com/ireaderlab/alex
Alex架構(gòu)圖
Alex 主要功能
保存壓力測(cè)試參數(shù)以便反復(fù)壓測(cè)
保存壓力測(cè)試報(bào)告以便后續(xù)查看和分享
提供了簡(jiǎn)單直接的圖形和文字報(bào)告
可以同時(shí)對(duì)多個(gè)http接口進(jìn)行壓力測(cè)試
可以同時(shí)對(duì)集群內(nèi)多個(gè)host:port對(duì)進(jìn)行壓測(cè)
使用多組調(diào)用參數(shù)避免壓測(cè)時(shí)出現(xiàn)的數(shù)據(jù)熱點(diǎn)問題
使用步驟設(shè)置边锁,生成漸進(jìn)式的壓力源
提供簡(jiǎn)單的壓測(cè)機(jī)器系統(tǒng)狀態(tài)實(shí)時(shí)顯示功能
Alex Limitations
Alex運(yùn)行在單一進(jìn)程里本今,如果你需要分布式的壓測(cè)環(huán)境,就得部署多個(gè)節(jié)點(diǎn)匪傍,壓測(cè)時(shí)需要多人同時(shí)操作。
Vegeta在壓力過載時(shí)沒有提供立即停止的方法觉痛。這就需要你細(xì)心設(shè)計(jì)壓測(cè)步驟役衡,仔細(xì)觀察系統(tǒng)狀態(tài)避免系統(tǒng)過載。
Qps和并發(fā)數(shù)不宜過大薪棒。我曾經(jīng)使用Alex工具單進(jìn)程測(cè)試了HelloWorld的web程序每個(gè)請(qǐng)求吐出1500字節(jié)手蝎,qps最多可以達(dá)到60000,基本讓千兆網(wǎng)卡打滿俐芯。
在大型壓力測(cè)試下棵介,盡量避免Gzip解壓縮。解壓縮會(huì)消耗大量的cpu資源吧史,會(huì)導(dǎo)致壓測(cè)報(bào)告不準(zhǔn)確邮辽。你可以通過部署多個(gè)節(jié)點(diǎn)來進(jìn)行大型壓力測(cè)試。
只支持Http協(xié)議。Https協(xié)議不打算支持逆巍,因?yàn)榧用芙饷芤餐瑯訒?huì)消耗大量cpu資源,導(dǎo)致報(bào)告不準(zhǔn)確莽使。
報(bào)告只是提供一種性能參考锐极,要勇于對(duì)報(bào)告進(jìn)行質(zhì)疑。
Alex雖然有如此諸多限制芳肌,這不影響它的日常使用灵再。
安裝
install mongodb
install golang # 1.4+ is required
go get github.com/go-martini/martini
go get github.com/tsenart/vegeta
go get gopkg.in/mgo.v2
go get github.com/shirou/gopsutil
# godep restore
git clone https://github.com/shellquery/alex.git
cd alex
go build
./alex
./alex -c config.json
open browser
http://localhost:8000/
配置config.json
{
"BindAddr": "localhost:8000",
"MongoUrl": "mongodb://localhost:27017/alex",
"Teams": [
"python",
"java",
"php",
"go"
]
}
引用
棒棒的vegeta https://github.com/tsenart/vegeta
簡(jiǎn)單直接的boom https://github.com/rakyll/boom
截屏