読者です 読者をやめる 読者になる 読者になる

CA MOBILE エンジニアブログ

株式会社シーエー・モバイルのエンジニアブログです

wrkでhttpd、nginx、H2Oを比べてみた

MiddleWare

インフラシステムグループ deraxです。

今話題になってるH2Oについてhttpd、nginxとベンチマークにて比べてみました。

客観判断が出来るようチューニングは行わずインストールも出来るだけyumで実施しました。

●環境

CPU:Xeon X3363 @ 2.83GHz、 2Core
MEM:4GB
の仮想サーバ

●ベンチ条件

wrkでの比較で2スレッド、100接続、10秒にてベンチ。
3つともチューニングはしていません。

3つはポート別で起動するようにしましたが、
ベンチ中は一つしか動作させていません。

リクエストページは同一でテキストページ。

●感想

H2O > nginx > httpd の順番でH2Oが一番Transfer/secの数値が良かったです。 H2O早すぎる・・・

H2O、nginxの2つはtimeout が出てたのが気になります。
*単発でベンチを取得していますので数回実行すると結果は変わる・・・かもしれません。

httpdと比較して6倍程度速かったですので本番での稼動が実現したらメリット教授の期待感が持てます。

  • httpd 2.2.15@yumインストール:8080ポート
    Transfer/sec: 0.97MB

  • nginx 1.8.0@yumインストール:8081ポート
    Transfer/sec: 3.88MB

  • H2O 1.5.1@ソースインストール:8082ポート
    Transfer/sec: 5.69MB

今回H2Oはパッケージ利用しましたが、ソースからインストールする場合、
perlについてIPv6サポートしている最新のバージョンを利用しなくてはいけないので
若干手数が増えそうです。

また、ApacheやNginxはデフォルト設定ファイル(conf)があるのですが、
H2OはConfファイル自作する必要があります。

H2Oマニュアルページにサンプルあります。こんな感じです。

細かく設定出来そうですし、動作確認・検証を進めて また本ブログに記載したいと思います。

ベンチマーク詳細
  • httpd 2.2.15@yumインストール:8080ポート
/usr/local/wrk -t 2 -c 100 -d 10 http://[テストサーバIPアドレス]:8080/
Running 10s test @ http://[テストサーバIPアドレス]:8080/
2 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 29.60ms 42.20ms 406.50ms 91.42%
Req/Sec 2.02k 1.30k 5.55k 63.39%
38175 requests in 10.11s, 9.83MB read
Requests/sec: 3776.17
Transfer/sec: 0.97MB
  • nginx 1.8.0@yumインストール:8081ポート
/usr/local/wrk -t 2 -c 100 -d 10 http://[テストサーバIPアドレス]:8081/
Running 10s test @ http://[テストサーバIPアドレス]:8081/
2 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 78.98ms 149.99ms 1.97s 85.84%
Req/Sec 9.82k 6.50k 24.82k 67.23%
177276 requests in 10.33s, 40.06MB read
Socket errors: connect 0, read 0, write 0, timeout 43
Requests/sec: 17160.45
Transfer/sec: 3.88MB
  • H2O 1.5.1@ソースインストール:8082ポート
/usr/local/wrk -t 2 -c 100 -d 10 http://[テストサーバIPアドレス]:8082/
Running 10s test @ http://[テストサーバIPアドレス]:8082/
2 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 68.87ms 266.95ms 1.75s 93.92%
Req/Sec 16.18k 5.04k 19.14k 83.23%
250189 requests in 10.10s, 57.50MB read
Socket errors: connect 0, read 0, write 0, timeout 48
Requests/sec: 24775.05
Transfer/sec: 5.69MB