風邪が完治していない。調子悪い。今日はもうダメだ。さっぱりしたものでも食って帰ろう。
えっと、SPDYの簡単な性能検証してみた。SPDY vs HTTPS vs HTTPで。結論から言うと、SPDY > HTTP > HTTPSだった(今回の検証条件においては)。



0. 検証条件

検証条件は次の通り。

  • おれの家のMacBook Pro(若干調子悪い・・・)
  • WiFi接続
  • Chromeで次に示す検証URLにアクセスし、画像の総ダウンロード時間を取得する
    • abコマンドとかがSPDYに対応してたらいいんだけどな・・・
  • 結果は10回程度サンプリングした平均値とする
  • 試行1回ごとにドキュメントルートで↓のようなコマンドを叩き、ファイルのタイムスタンプを更新する。
    • find `pwd` -name “*” | xargs touch
  • nginxのkeepalive を有効にしたときと無効にしたときの両方で検証する。
    • いわゆるHTTPのkeepaliveと、1つのTCPコネクション上でセッションコントロールすると言われるSPDYの違いが見たかったので。
アクセス先の検証URLは次の通り。
  • SPDY
    • https://hiroakis.com/app/spdy_bench/xxx.html
  • HTTPS( not SPDY )
    • https://hiroakis.com:10443/app/spdy_bench/xxx.html
  • HTTP
    • http://hiroakis.com/app/spdy_bench/xxx.html
ここで、xxx.htmlは、10.html, 50.html, 100.html, 500.html, 1000.htmlに変更してアクセスする。それぞれのhtmlにはその数字の個数分だけ画像が埋め込まれている。埋め込まれている画像はすべて同じものあるが、?00001などと適当なクエリストリングを付与していて、ブラウザにはすべて別の画像として認識させる。

1. 結果

で、結果。結果を次に示す。グラフの縦軸は総ダウンロード時間で単位はmsec、横軸は画像数。

KeepAlive Onのとき
コンテンツ数 SPDY (msec) HTTPS (msec) HTTP (msec)
10 307 309 308
50 388 536 526
100 581 868 841
500 1620 3660 3242
1000 3702 7341 6501
keepalive-on

 

図1. KeepAlive ONのとき

 

KeepAlive Offのとき
コンテンツ数 SPDY (msec) HTTPS (msec) HTTP (msec)
10 295 389 336
50 416 1105 831
100 557 1940 1392
500 1668 9000 6290
1000 3747 18040 11300
keepalive-off

図2.  KeepAlive OFFのとき

2. 考察

KeepAlive On /Offの差異

SPDYを除き、HTTPS, HTTP通信の時はKeepAliveを有効にした方がパフォーマンスは圧倒的に良い。これは当然といえば当然で、今回サンプリングしたような静的コンテンツのみの配信の場合は、HTTPコネクションを維持していた方が効率が良いのは当然である。適切なKeepAliveの設定は静的配信に効果があるということを示している。おもしろいのはSPDY、keepalive onのときとoffのときで差がほとんどない。これはSPDYが同一コネクションでやりとりしている、ということを表しているんじゃあないかと考えている。

結果としてSPDY > HTTP > HTTPSだった

KeepAlive接続の有無にかかわらず、SPDY, HTTPS, HTTPの三者を比較すると、SPDY > HTTP > HTTPSの順で高速だった。ダウンロードするコンテンツ数が増えるほど差は顕著に見える。また、コンテンツ数がそれほど多くないときは、HTTPに対するHTTPS接続のオーバヘッドはそれほどでもないことも結果として面白い。

3. 結論

大量の静的コンテンツ配信したい場合はSPDY使ってもいいかもね。

4. ボヤキ

しかし、まぁ大量のコンテンツをアレしたいときは、アカマイ使ったりするよね、このギョーカイ。自サイトで大量のコンテンツ配信してるときはいいかもね。
ご指摘、アドバイス、誹謗中傷、脅迫、罵詈雑言、いちゃもん等がございましたらコメント欄に書き込んでいただけると嬉しいです。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">

Set your Twitter account name in your settings to use the TwitterBar Section.