Vegetaというのは、HTTPの負荷テストツールです。GithubのVegetaを見ると某アニメのキャラクターがあって、テンションが上がります! 今回は、本格的に利用するにあたりどんなツールなのか、どんなことが出来るかを簡単にまとめていこうと思います。
目次
どんなツールなのか
特徴は下記の通りです。
- Go言語で作成されている
- CLIとしても使える
- ライブラリとして利用出来る
インストール
ローカルで触ってみる為にmacにインストールをしてみようと思います。下記のコマンドで簡単にインストール出来ます。
brew update && brew install vegeta
検証に使うサンプルプログラム
今回は、下記のgolangで記載されたhttpサーバを利用します。echパッケージなどは利用せず、標準パッケージのnet/httpを利用することにします。
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World")
}
func main() {
http.HandleFunc("/", handler) // ハンドラを登録してウェブページを表示させる
http.ListenAndServe(":8080", nil)
}
実行する。
下記のようなコマンドを実行してみます。
echo 'GET http://localhost:8080' | vegeta attack -rate=10 -duration=5s | vegeta report
今回のコマンドは、duration=5s
、rate=10
は、5秒間の間、10 req/secで指定したURLにアクセスすることを示しています。
実行結果
出力結果に記載されているので、そこを参考にみてみると、min、means、50%、95%、99%のレスポンスタイムが収まる時間、最も遅い時間が表示される。report種別を変更したりすることでjson形式への出力も出来るようですね。
まとめ
今回は、ほんの触りしか利用していませんが、個人的にはシンプルで使いやすい印象が強いです。今後は、CI/CDツール等の連携なども意識した利用イメージも視野に入れて検討してみるのも面白いかもしれないですね。