dh memoranda

徒然なるままに日暮らしブログに向かいて...

SPDY 試してみた

mt.cgi over SPDY

このブログを管理している Movable Type のバージョンアップをしたついでに、サーバに mod_spdy を仕込んで SPDY 下で MT を動かしてみました。結果は、FastCGI 単体にくらべて、10-20% くらい高速化したかな、いったところでした。以下詳細をば。

ところで SPDY というのは、Google が開発したプロトコルで、最近の Chrome や Firefox といったブラウザが対応をはじめています。HTTP のレイテンシを減らすためのプロトコルになっています。うちのサーバは AWS の US-EAST にいるので、レイテンシが大きく、これは効果があるかな、とおもって導入してみました。

導入ですが、apache のモジュールが公開されていますので、これをインストールしました。

https://developers.google.com/speed/spdy/mod_spdy/

わたしの場合は fedora だったので、コマンドとしては以下のとおり。

# wget https://dl-ssl.google.com/dl/linux/direct/mod-spdy-beta_current_i386.rpm
# rpm -U mod-spdy-*.rpm

あとは、httpd を restart して完了、設定は /etc/httpd/conf.d/spdy.conf の標準のままにしています。これで MT の管理画面にアクセスすると SPDY が有効になりました。実のところ、Chrome Extension の SPDY Indicator を使って確認するくらいしかできませんが。

実際の効果ですが、冒頭にも書いたように、ページが表示されるまでの時間が 10-20% くらい早くなったような気がします。うちのサーバでは、MT を https + FastCGI で利用しているのですが、これを SPDY 対応してみて、実際に簡易的に測ってみました。サーバを restart したあと、ブラウザのキャッシュをクリアして直後に、ログインページ、ダッシュボード、エントリー一覧、エントリーの編集、プレニュー、エントリーの編集、ダッシュボード、ログアウト、という順番にアクセスして、その時間を Webkit の Inspector の Network を使って測っています。あ、ブラウザは Chrome ベータの最新版 (19.0.1084.15) を使いました。

結果は以下のとおり。1回しか測っていないので、誤差も大きいと思いますが、体感的にもちょっと早くなった気はします。

SPDY なし (Apache + FastCGI)

ログインページ 10 requests ❘ 657.74KB transferred ❘ 4.30s (onload: 4.30s, DOMContentLoaded: 3.71s)
ダッシュボード 21 requests ❘ 448.76KB transferred ❘ 7.17s (onload: 7.17s, DOMContentLoaded: 5.74s)
エントリー一覧 27 requests ❘ 169.20KB transferred ❘ 6.76s (onload: 5.31s, DOMContentLoaded: 3.73s)
個別記事 50 requests ❘ 392.73KB transferred ❘ 6.90s (onload: 6.91s, DOMContentLoaded: 5.28s)
プレビュー requests ❘ 11.51MB transferred ❘ 8.38s (onload: 8.38s, DOMContentLoaded: 4.56s)
再び個別記事 50 requests ❘ 111.23KB transferred ❘ 5.11s (onload: 5.15s, DOMContentLoaded: 4.88s)
再びダッシュボード 21 requests ❘ 36.13KB transferred ❘ 3.50s (onload: 3.51s, DOMContentLoaded: 3.49s)
サインアウト 10 requests ❘ 4.86KB transferred ❘ 787ms (onload: 788ms, DOMContentLoaded: 776ms)
(参考)フルリビルド 2分59秒

SPDY あり

ログインページ 10 requests ❘ 658.02KB transferred ❘ 3.51s (onload: 3.51s, DOMContentLoaded: 3.00s)
ダッシュボード 21 requests ❘ 0B transferred ❘ 4.46s (onload: 4.46s, DOMContentLoaded: 4.28s)
エントリー一覧 27 requests ❘ 0B transferred ❘ 4.34s (onload: 2.92s, DOMContentLoaded: 2.65s)
個別記事 50 requests ❘ 132.57KB transferred ❘ 5.07s (onload: 5.10s, DOMContentLoaded: 3.55s)
プレビュー 193 requests ❘ 11.46MB transferred ❘ 7.09s (onload: 7.10s, DOMContentLoaded: 2.88s)
再び個別記事 50 requests ❘ 374B transferred ❘ 4.09s (onload: 4.13s, DOMContentLoaded: 3.85s)
再びダッシュボード 21 requests ❘ 0B transferred ❘ 3.08s (onload: 3.11s, DOMContentLoaded: 3.11s)
サインアウト 10 requests ❘ 0B transferred ❘ 590ms (onload: 591ms, DOMContentLoaded: 579ms)
(参考)フルリビルド 3分11秒

あと、Firefox も 11 以降で対応しているようですね。Firefox 12.0 でも、about:config を開いで、SPDY を使うようにしました。ちょっと早くなったかな。

spdy enabled on Firefox 12.0

対応ブラウザが限られていますが、Apache のモジュールをいれるだけで効果を得られるので、できるかたはやってみてもいいのではないでしょうか。