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のほうが楽な気がした( ´∀`)