PewpewHTTP 壓力測(cè)試器
Pewpew 是一個(gè)適用于網(wǎng)站和 Web 服務(wù)的靈活的 HTTP 命令行壓力測(cè)試器,它可以通過多種配置來沖擊多個(gè)目標(biāo),模擬真實(shí)世界的負(fù)載并繞過緩存。
注意:Pewpew 旨在幫助開發(fā)網(wǎng)絡(luò)服務(wù)和網(wǎng)站的人,請(qǐng)負(fù)責(zé)任地使用它。
特性
- 多種服務(wù)器測(cè)量模式
- 支持正則表達(dá)式定義的目標(biāo)
- 可同時(shí)沖擊多個(gè)目標(biāo)
- 沒有 runtime 依賴,單個(gè)二進(jìn)制文件
- 有關(guān)計(jì)時(shí)、數(shù)據(jù)傳輸、狀態(tài)代碼等的統(tǒng)計(jì)信息
- 將原始數(shù)據(jù)導(dǎo)出為 TSV / JSON 以進(jìn)行分析、圖表等。
- HTTP2 支持
- IPV6 支持
- 大量命令行和配置文件選項(xiàng)(任意 header、cookie、用戶代理、timeout ;忽略 SSL 證書、HTTP 身份驗(yàn)證、Keep-Alive、DNS 預(yù)取等)
模式
Pewpew 具有兩種獨(dú)立的模式:壓力和基準(zhǔn)。
壓力模式 ( pewpew stress) 以服務(wù)器可以響應(yīng)的速度發(fā)送請(qǐng)求(受并發(fā)限制)。這種模式通常最適合回答諸如“服務(wù)器返回 1000 個(gè)請(qǐng)求的速度有多快?”、“服務(wù)器是否會(huì)出現(xiàn) OOM?”、“我可以讓服務(wù)器達(dá)到 503 嗎?”,以及更多與過載相關(guān)的問題。
基準(zhǔn)模式 ( pewpew benchmark) 以固定速率(每秒請(qǐng)求數(shù))發(fā)送請(qǐng)求。這種模式通常最適合回答諸如“在延遲超過 1 秒之前服務(wù)器可以處理多少流量?”、“如果到服務(wù)器的流量被限制在 100 rps 的速率,是否會(huì)有 503 秒?”,以及其他可測(cè)量的問題控制流量測(cè)試。
例子
pewpew stress -n 50 www.example.com
向http://www.example.com發(fā)出 50 個(gè)請(qǐng)求。
pewpew benchmark --rps 100 --duration 60 www.example.com
60 秒內(nèi),每秒向 www.example.com 發(fā)送 100 個(gè)請(qǐng)求
pewpew stress -X POST --body '{"hello": "world"}' -n 100 -c 5 -t 2.5s -H "Accept-Encoding:gzip, Content-Type:application/json" https://www.example.com:443/path localhost 127.0.0.1/api
向 https://www.example.com:443/path 、http://localhost 、http://127.0.0.1/api 三個(gè)目標(biāo)都發(fā)出請(qǐng)求:
- 每個(gè)目標(biāo) 100 個(gè)請(qǐng)求總數(shù)(總共 300 個(gè))
- 每個(gè)目標(biāo) 5 個(gè)并發(fā)請(qǐng)求(同時(shí)發(fā) 15 個(gè))
- 內(nèi)容: body
{"hello": "world"} - 兩個(gè)標(biāo)題:
Accept-Encoding:gzip和Content-Type:application/json - 每個(gè)請(qǐng)求在 2.5 秒后超時(shí)。
有關(guān)命令行選項(xiàng)的完整列表,請(qǐng)運(yùn)行pewpew help或pewpew help stress
