気まぐれ更新

Go lang製 HTTP負荷検証用ツール Vegetaつかってみた

久々更新。新卒二年目にして色々考えた結果、技術ブログは残したほうが良いと思い再開しました

Vegetaとは

Go言語で書かれているhttpの負荷テストツール
README.mdにデカデカとベジータが貼られてるのがシュール

導入方法

まずgoを入れる。これがないと始まらない
goが入ったら下記コマンドでvegetaを入れる
GOPATHの設定も忘れずに

$ go get github.com/tsenart/vegeta
$ go install github.com/tsenart/vegeta

実行方法

vegeta attackというコマンドで負荷を放つことができる
パイプでvegeta reportとすると、結果をいい感じに見せてくれる

$ vegeta attack -rate=100 -duration=10s -targets=targets.txt | vegeta report

Requests      [total, rate]            10500, 175.02
Duration      [total, attack, wait]    1m3.425580927s, 59.99427778s, 3.431303147s
Latencies     [mean, 50, 95, 99, max]  248.669759ms, 57.336422ms, 967.369672ms, 4.430589938s, 5.475878783s
Bytes In      [total, mean]            6814422, 648.99
Bytes Out     [total, mean]            1228500, 117.00
Success       [ratio]                  100.00%
Status Codes  [code:count]             200:10500

-rate

rpsを指定できる rpsは requests per secondの略で1秒間何リクエストするかの単位

-duration

リクエストし続ける時間を指定できる

-targets

下記フォーマットでリクエスト先、HTTPメソッド、リクエストヘッダ、リクエストボディを指定することができる

// フォーマット
<HTTPメソッド> <リクエスト先ホスト>
<リクエストヘッダ>
<リクエストボディのJSONファイル>

// 例
POST http://hoge.com:4080/api
Content-Type: application/json
@test.json

まとめ

比較的簡単に負荷検証ができて、便利
必要ではなかったので使わなかったが、plotオプションでレポートをグラフで可視化することも可能みたい
scala製のgatlingも触ってみたが、vegetaのほうが楽な気がした( ´∀`)