KVSをWebサーバーとするとどうなるのか?ベンチマークを取ってみた。

一昨日公開した拙作のクリティカルスピードですが、ベンチマークを公開していなかった為、
どの程度使えるのかよくわからないというご意見を頂きました。
クリティカルスピードについてはMOONGIFT様の紹介をご覧下さい
KVSを使った高速配信Webサーバ「クリティカルスピード」


そこで古いサーバーでベンチマークを取ったので結果のみご紹介いたします。

Celeron 430 1.80GHz メモリ2Gのサーバーで実験

WRITE性能

ファイルベースの場合(普通のウェブサーバー)

静的に1万ディレクトリ5万ページを作成する

time perl make_static_benchmark_htmls.pl
27.81s user 6.59s system 93% cpu 36.935 total

クリティカルスピードの場合(KVSをウェブサーバーとして使う)

1万ディレクトリ5万ページを作成する

time perl make_criticalspeed_benchmark_htmls.pl
4.08s user 1.57s system 22% cpu 24.678 total

1万ディレクトリ5万ページを別のサーバーから作成する

time perl make_criticalspeed_benchmark_htmls.pl
5.01s user 3.23s system 6% cpu 2:05.33 total

READ性能

ファイルベースの場合(普通のウェブサーバー)

Plack::Middleware::Staticでサーバーを立て、ローカルネットワーク内から10000回アクセスする

/usr/sbin/ab -n 10000 -c 100 http://192.168.1.123:7777/index.html
Time taken for tests: 14.398395 seconds
Total transferred 139290000 bytes
Requests per second: 694.52 [#/sec](mean)
Time per request: 1.440ms

クリティカルスピードの場合(KVSをウェブサーバーとして使う)

Plackでサーバーを立て、ローカルネットワーク内の別PCから10000回アクセスする

/usr/sbin/ab -n 10000 -c 100 http://192.168.1.123:7778/www.example.com/index.html
Time taken for tests: 25.397102 seconds
Total transferred 139030000 bytes
Requests per second: 393.75 [#/sec](mean)
Time per request: 2.540ms

TokyoTyrantをWebサーバーとみなし、ローカルネットワーク内の別PCから10000回アクセスする

/usr/sbin/ab -n 10000 -c 100 http://192.168.1.123:1979/www.example.com/index.html
Time taken for tests: 12.56123 seconds
Total transferred 138348192 bytes
Requests per second: 829.45 [#/sec](mean)
Time per request: 1.206ms

まとめ

以上WRITE性能については改善したといって良いと思います。

実行時間は2/3になっていますし、CPU負荷が1/4になっています。

READ性能については40%ほど遅くなっていますが
古いサーバーで秒間400アクセス捌けているので、
実用に耐えると考えています。

そして、TokyoTyrantを直接Webサーバーとして使った場合は
ファイルベースの時と比較しても12%速い結果となっています。

速度を目指してKVSをウェブサーバーとして使うという選択肢も
十分ありえることを示唆していると思います。

但し、TokyoTyrantを直接ウェブサーバーとして使う場合設定が複雑になる為、実用を考えると
PlackやRack等でWebサーバーをたてて、そこからKVSにアクセスするのが良いと考えます。

また、クリティカルスピードの場合、localhostにファイルを置く時と
同じような感覚で別のサーバーにファイルを配置することができます。

速度的にも5万ページを2分なら十分実用的といえると思います。

以上のベンチマークの結果、クリティカルスピードは書込時の負荷を減らしたい人、
あるいは別のサーバーに素早く書込みたい人には実用的な選択肢として検討していただけると思います。


ベンチマークのソースは次回バージョンアップ時に
比較表等をつけて同梱する予定です。

クリティカルスピードやこのベンチマークについて
ご質問やご意見がありましたら、twitterにてお気軽にどうぞ。
twitter

良かったらあなたのサーバーでのベンチマークも是非教えてください。

4月14日追記
OSS ipediaにて事例紹介
http://ossipedia.ipa.go.jp/case/102/