22
さくらのクラウドで h2o のベンチマemasaka

さくらのクラウドでh2oのベンチマーク

  • Upload
    emasaka

  • View
    70

  • Download
    0

Embed Size (px)

Citation preview

さくらのクラウドでh2oのベンチマーク

emasaka

h2oWebサーバー奥一穂氏(DeNA)作(2014〜)https://github.com/h2o/h2o

特徴爆速(らしい)特にヘッダーのパースが速い(らしい)picohttpparser

HTTP/2対応

ならばベンチマークh2ovs.Apachehttpdvs.Nginx

要件サーバーとクライアントと別の物理サーバーでただし公衆網は通らないほうがいい回線がボトルネックになりそう

安く(できればタダ)

さくらのクラウド石狩第1DCと石狩第2DCから選べるサーバーは確実に分かれるが、建物内で通信するはず

こんな感じ

※写真はさくらインターネットのプレスリリース(

)から拝借http://www.sakura.ad.jp/press/2011/0719_cedec.html

さくらのクラウド(続き)日割り計算で借りられるOSCで2万円分のクーポンをもらった

借りたサーバー日割912円のプラン。

CPU:6コアメモリ:12GBディスク:SSDUbuntu14.04LTS

を2台

6コア$nproc6

借りたサーバー(続き)クライアント:石狩第1wrk

サーバー:石狩第2h2oApachehttpdNginx

クライアントにwrkをインストール

$sudoapt-getupdate$sudoapt-getinstallbuild-essentiallibssl-devgit$gitclonehttps://github.com/wg/wrk.git$cdwrk$make$sudocpwrk/usr/local/bin

サーバーにApachehttpdをインストー

ル$sudoapt-getinstallapache2$sudovi/etc/apache2/ports.confListen8002

$sudovi/etc/apache2/sites/sites-available/000-default.conf<VirtualHost*:8002>

$sudoserviceapache2restart

サーバーにNginxをインストール

$sudoapt-getinstallnginx-full$sudovi/etc/nginx/sites-available/defaultlisten8003default_server;

root/var/www/html$sudoservicenginxrestart

h2oをインストールローカルからAnsibleを実行

h2o設定$vih2o.conflisten:8001hosts:"127.0.0.1.xip.io:8001":paths:/:file.dir:/var/www/htmlaccess-log:/dev/null

共通コンテンツ$sudosh-c'echo"<html></html>">/var/www/html/index.html'

クライアントからwgetでそれぞれアクセスして確認

結果(h2o)$wrk-c500-d30-t5http://hoge.example.com:8001/Running30stest@http://hoge.example.com:8001/5threadsand500connectionsThreadStatsAvgStdevMax+/-StdevLatency137.68ms225.00ms1.98s86.18%Req/Sec4.80k2.20k18.12k75.19%701376requestsin30.01s,149.83MBreadSocketerrors:connect0,read0,write0,timeout57Requests/sec:23368.91Transfer/sec:4.99MB

結果(Apachehttpd)$wrk-c500-d30-t5http://hoge.example.com:8002/Running30stest@http://hoge.example.com:8002/5threadsand500connectionsThreadStatsAvgStdevMax+/-StdevLatency2.35ms12.11ms459.69ms99.39%Req/Sec4.43k2.52k13.62k65.58%528951requestsin30.10s,120.66MBreadRequests/sec:17574.07Transfer/sec:4.01MB

結果(Nginx)$wrk-c500-d30-t5http://hoge.example.com:8003/Running30stest@http://hoge.example.com:8003/5threadsand500connectionsThreadStatsAvgStdevMax+/-StdevLatency173.36ms300.41ms1.89s86.39%Req/Sec4.66k2.39k20.73k73.19%685059requestsin30.10s,167.87MBreadSocketerrors:connect0,read0,write0,timeout243Requests/sec:22759.04Transfer/sec:5.58MB

比較h2o速い。

Server Req

h2o 701376

Apachehttpd 528951

Nginx 685059

ただし大きなデータだと実は3つにあまり差がない(Apachehttpdが少し速い?)リクエスト処理vs.I/O性能?

h2oの例では面倒なのでログを出してない。それも有利?