会社のブログで新しいエントリーが公開されました。
負荷テストツールの tsung を使ってみる
https://toe.bbtower.co.jp/20160407/93/
tsung は erlang で書かれたツールです。JMeter ほど細かな制御ができるわけではないですが、大きな負荷を掛けたいときには便利なツールです。特に設定をしなくても、cookie とかも勝手に食ってくれたかと思うので、ページ遷移にも追随してくれるはずです。
ふと気になって、
と
で HDD を mount した際に、スピードに差異があるのか気になったので dbench を使って、調べてみました。共に USB接続です。
# dbench -c client.txt -t 60 40
で測定。1回だけしか測りませんでした。mount pointは同じ場所。
Throughput | |
これdo台MASTER | 77.6407 MB/sec 40 procs |
裸族の頭 IDE+SATA | 87.2758 MB/sec 40 procs |
わりと新しい Linux-2.16.14.4 上で取った Filesystem 別のベンチマーク
EXT2 vs EXT3 vs JFS vs ReiserFSv3 vs ReiserFSv4 vs XFS
http://linuxgazette.net/122/TWDT.html#piszcz
思った以上に枯れた ext2, ext3 が良い気がしてきた……
Easy Site Benchmarking
http://public.e-tunity.com/sitebenchmark/sitebenchmark.html
http://freshmeat.net を見てて見つけた Perl で作られた Web benchmark。グラフ描写用に、gnuplot 用のデータを吐き出させることも可能です。
$ tar zxvf sitebenchmark.tar.gz
$ cd sitebenchmark
$ su
# make install
で、/usr/local にインストールされる。もしインストール先を変えたければ
# export EBASE=/usr
# make install
と、環境変数で設定する。必要とされる Perl モジュールは
- Getopt::Std
- IO::Socket::INET
- Time::HiRes
の3つ。その他には、gnuplot が必要。
実行例
$ echo 'GET /' | sitebench -v 5 100 192.0.2.1 80 Welcome > bench.log
上記の例だと、192.0.2.1 の 80 ポートへ "GET /" のリクエストを発行することになります。掛ける負荷は、同時接続数 5で、そのクライアント毎に100リクエストを投げることに。またリクエストの成功は、"Welcome" がレスポンスに含まれているかどうかで判断されます。
で、ある実験用サーバで試した結果が以下
bench.log
5327 1 0.07574 1 0.022984
5327 1 0.039719 1 0.255656
〜中略〜
5331 1 0.052004 1 0.024625
5331 1 0.050035 1 0.023592
5331 1 0.050952 1 0.023404
5331 1 0.052174 1 0.023401
実際には、テスターとして、かなり非力なクライアントを使ったので、そっちの影響の方が大きいかも?
これを sitecollect に掛けます。
$ sitecollect <bench.log
Analysis Overview
Failed connects: 0
Succeeded connects: 500
Mean successful connect time: 0.046193328
SD successful connect times: 2.23098586457074e-05
Failed matches: 0
Mean failed match request time: 0
SD failed match times: 0
Succeeded matches: 500
Mean succeeded match time: 0.024235006
SD succeeded match times: 0.000113374238827619
Mean total processing time: 0.070428334
SD total processing time: 0.000135791207709864
で、siteplot で、gnuplot 用のコマンドファイルを吐き出させます。
$ siteplot 'Benchmark of www.example.org' graph <bench.log
Collecting data..
500 successes collected, sorting..
5% occurs at index 405, value 0.063377
25% occurs at index 23, value 0.066454
75% occurs at index 454, value 0.072567
95% occurs at index 145, value 0.077346
ちなみに、データが少なすぎると
$ siteplot 'Benchmark of www.mysite.org' graph <bench.log
Collect ing data..
0 successes collected, sorting..
Can't use an undefined value as an ARRAY reference at /usr/local/bin/siteplot line 96, <STDIN> line 20.
こんな感じでエラーが出たり。それはさておき、これを gnuplot に食わせます。
$ gnuplot
gnuplot> load 'graph.gnuplot'
ん〜 ab よりはいいんだろうなぁ。もうちょっと負荷を掛けた状態で試さないとだめかも。もうちょっと負荷をしっかり掛けられるぐらいのCPUを持ったクライアントで試してみよう(^_^;