2015年3月27日金曜日

CentOS に Go 言語をインストールして boom で負荷テストをやってみた

概要

boomはGo言語で書かれた負荷かけツールです
ApacheBench(ab)と同じ感覚で使えます
abだとHTTP Methodを指定して実行できなかったのでboomを使ってPOST Methodのテストを実施してみました

環境

  • CentOS 6.6 64bit
  • go 1.4.2
  • boom (revison:372ea3b0e6cb084657d1db7eacccdfae929af5b9)

Goのインストール

以下はすべてrootで作業しています

cd /var/tmp
wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz
tar zvxf go1.4.2.linux-amd64.tar.gz
mv go /usr/local/
mkdir /root/gocode
echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc
echo "export GOPATH=/root/gocode" >> ~/.bashrc
source ~/.bashrc

boomのインストール

go get github.com/rakyll/boom

で完了、簡単

テストしてみる

./gocode/bin/boom -n 10000 -c 100 -m POST 'http://localhost/'

「-n」送信する全リクエストの数
「-c」はその全リクエストをはいくつの同時並列で実行されるか
(なので-cを増やしても全リクエスト数は変わりません)
「-m」でHTTP Methodを指定できます

結果は以下のような感じ

10000 / 10000 Boooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 %

Summary:
  Total:        1.6549 secs.
  Slowest:      0.0373 secs.
  Fastest:      0.0053 secs.
  Average:      0.0164 secs.
  Requests/sec: 6042.6406
  Total Data Received:  2730000 bytes.
  Response Size per Request:    273 bytes.

Status code distribution:
  [404] 10000 responses

Response time histogram:
  0.005 [1]     |
  0.008 [32]    |
  0.012 [10]    |
  0.015 [5098]  |????????????????????????????????????????
  0.018 [1387]  |??????????
  0.021 [2715]  |?????????????????????
  0.024 [702]   |?????
  0.028 [31]    |
  0.031 [7]     |
  0.034 [0]     |
  0.037 [17]    |

Latency distribution:
  10% in 0.0131 secs.
  25% in 0.0138 secs.
  50% in 0.0148 secs.
  75% in 0.0197 secs.
  90% in 0.0210 secs.
  95% in 0.0217 secs.
  99% in 0.0230 secs.

ヒストグラムでレスポンスタイムの分布を出してくれるのが見やすくてGood

最後に

abの2.4.10以降だとboom同様に「-m」オプションでMethod指定ができるみたいなんですが
Apacheの2.4.12をソースインストールしてみたらabのバージョンだけ2.4.9だったのでboomを使った次第です
結果的にはabより良いツールだということがわかったので今後はboomを使ってみたいと思います

0 件のコメント:

コメントを投稿