最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

你的站點抗壓么?推薦一款超方便的開源壓測工具

2021-07-23 09:19 作者:HelloGitHub  | 我要投稿


這里是 HelloGitHub 推出的《講解開源項目》系列,本期介紹一款標星 17.7k 純 Go 語言實現(xiàn)的 HTTP(S) 壓測工具——vegeta

Vegeta 是一款用 Go 語言編寫的多功能 HTTP(S) 壓測工具:安裝方便、功能齊全、使用簡單,還可作為命令行工具或者開發(fā)庫進行使用。它不僅提供了常見的壓測功能,還支持格式化結(jié)果并輸出為圖表或動態(tài)顯示當前結(jié)果。


通過本文你將掌握這款強大壓測工具的基本用法,讓壓測只需一條命令!

一、 安裝

從倉庫下載編譯好的二進制文件:

tsenart/vegeta/releases

PC 上下載 amd64 版本即可,在 Mac Os X 上使用 Homebrew 安裝:

$ brew update && brew install vegeta

如果你會 Go 語言,使用get 自動安裝:

$ go get -u github.com/tsenart/vegeta

如提示找不到指令,請確保 go 以及 GOBIN 在您的環(huán)境變量中

二、快速入門

以下指令均可以在 Linux 下運行

對于下載編譯好的用戶建議先將 vegeta 臨時添加到 PATH 路徑,方便使用:

$ cd vegeta$ export PATH=$pwd:$PATH

或者直接將 vegeta 放到 bin 目錄下:

$ cd vegeta$ sudo mv vegeta /usr/local/bin/

輸入vegeta -version 后可以顯示證明安裝成功。

首次使用可以使用:

$ vegeta --help

來查看支持的指令和相關(guān)例子。

1. 使用例子

在命令行輸入:

$ echo "GET 127.0.0.1:233"| vegeta attack -rate=500 -connections=1 -duration=1s | tee results.bin | vegeta report

將會得到如圖所示的結(jié)果:


這條指令前半部分的echo "GET 127.0.0.1:233" 表示想要測試的地址,這里我使用的是 nginx 搭建的本地服務(wù)器,vegeta attack 代表測試指令,其后-rate-connections-duration 分別表示每秒鐘請求次數(shù)、每個地址最大連接數(shù)、持續(xù)時間。

攻擊完成后使用tee results.bin 保存測試報告并用veteta report 顯示報告內(nèi)容。

vegeta report 也支持使用 文本、JSON、直方圖、hdrplot 等:

$ echo "GET 127.0.0.1:233"| vegeta attack -rate=500 -connections=1 -duration=5s > results.bin

文本(默認情況)

$ vegeta report results.bin


直方圖

$ vegeta report -type='hist[0,1ms,2ms,3ms,4ms]' results.bin


JSON

$ vegeta report --type json results.bin


hdrplot

$ vegeta report --type hdrplot results.bin


2.生成圖形

上一小節(jié)的內(nèi)容,我們將文字形式的報告轉(zhuǎn)為圖表顯示,在命令行中輸入:

$ vegeta plot --title HelloGitHub results.bin > plot.html

在瀏覽器中打開新生成的plot.html,即可看到圖形化的測試數(shù)據(jù):


其中--title HelloGitHub 用來設(shè)置表頭文字。此外還有

-cpu 用來設(shè)置默認使用的 cpu 核心數(shù)量,這里我默認是 12??梢允褂?span>--threshold flag 設(shè)定下采樣閾值。

vegeta plot 也可以將多個曲線放在一起,使用 vegeta plot result_1.bin result2_.bin ... result_n.bin > plot.html 即可

此外,配合 Go 下的jaggrjplot 可以實現(xiàn)動態(tài)畫面輸出,官方給出的指令和效果如下:

$ echo 'GET localhost:8080' | \ vegeta attack -rate 5000 -duration 10m | vegeta encode | \ jaggr @count=rps \ hist\[100,200,300,400,500\]:code \ p25,p50,p95:latency \ sum:bytes_in \ sum:bytes_out | \ jplot rps+code.hist.100+code.hist.200+code.hist.300+code.hist.400+code.hist.500 \ latency.p95+latency.p50+latency.p25 \ bytes_in.sum+bytes_out.sum


由于 jplot 需要 iTerm2 但筆者沒有蘋果系列的電腦所以關(guān)于動態(tài)輸出部分的內(nèi)容大家需要自己研究。

3.使用管道

如果您了解 Shell 的管道那就不難看出,前文代碼中就是使用管道將echo "GET http:// xxx" 的輸出內(nèi)容傳給了vegeta。通過管道,除了使用簡單的echo 工具,也可以使用其他任何程序的輸出作為測試目標。

4.轉(zhuǎn)換編碼

vegeta 同樣提供了編碼轉(zhuǎn)換功能,現(xiàn)在支持三種編碼格式:Gob (二進制)、CSV 以及 JSON(默認) 使用veget encode 可以做到這幾種編碼的相互轉(zhuǎn)換:

$ echo "GET 127.0.0.1:233"| vegeta attack -rate=500 -connections=1 -duration=1s > results.gob$ cat results.gob | vegeta encode | jq .

可以顯示轉(zhuǎn)換為 JSON 格式的測試信息,或者:

$ cat results.gob | vegeta encode --to csv --output results.csv

輸入格式的檢測是自動完成的,不需要手動進行設(shè)置。

三、結(jié)語

到這里 vegeta 的基本使用到這里就結(jié)束了,它還支持一些精細參數(shù)的設(shè)置比如證書、密鑰等,但限于篇幅和筆者知識水平限制無法擴展太多,大家可以根據(jù)需要的使用vegeta [command] --help 指令進行查看,也可以閱讀官方的使用手冊

溫馨提示:壓測雖好玩但不要貪杯哦,別壓起勁兒來把線上服務(wù)給壓掛了!

你的站點抗壓么?推薦一款超方便的開源壓測工具的評論 (共 條)

分享到微博請遵守國家法律
肃宁县| 神池县| 天柱县| 兰考县| 友谊县| 获嘉县| 冀州市| 安宁市| 成都市| 东丽区| 安龙县| 突泉县| 海伦市| 台南县| 泸西县| 翁牛特旗| 曲周县| 安福县| 新丰县| 手机| 万宁市| 垦利县| 同德县| 扶风县| 中阳县| 山东省| 大兴区| 顺义区| 静安区| 上栗县| 平原县| 武城县| 桐梓县| 芜湖市| 天镇县| 莎车县| 忻城县| 伽师县| 蚌埠市| 炎陵县| 景德镇市|