<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 4020字,需瀏覽 9分鐘

           ·

          2021-07-31 22:39


          本期介紹一款標星 17.7k 純 Go 語言實現(xiàn)的 HTTP(S) 壓測工具——vegeta

          項目地址:https://github.com/tsenart/vegeta

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

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

          一、 安裝

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

          https://github.com/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 http://127.0.0.1:233"| vegeta attack -rate=500 -connections=1 -duration=1s | tee results.bin | vegeta report

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

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

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

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

          $ echo "GET http://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 用來設置表頭文字。此外還有

          -cpu 用來設置默認使用的 cpu 核心數(shù)量,這里我默認是 12。可以使用 --threshold flag 設定下采樣閾值。

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

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

          $ echo 'GET http://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 http://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

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

          三、結(jié)語

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

          項目地址:https://github.com/tsenart/vegeta

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


          end


          瀏覽 22
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人性爱网站在线 | 国产九一在线视频 | 91人妻网站 | 青青激情视频免费观看在线观看 | 成人无码A级毛片 |