KeepAliveを有効活用したい

自称プログラマ?のくせにいつも環境まわりのブログばっかり書いている@sa2yasuでございませう(笑)

基本動的Webサイトを作っているのでKeepAliveはこういった理由でoffにしています。

最近の流行だとeginxをリバースプロキシ、SSL処理用にして、バックエンドのWebサーバで動的コンテンツを出力するという構成を組みますが、規模の小さなサイトだと何もそこまでしなくても。。。という感じはします。
比較的小さなサイトなら別にKeepAlive offでもいんじゃねという気はしますが、画像の多いページを見ると「こいつらが1個1個Httpコネクション張りにいってんのか」と貧乏性な僕の心を揺さぶるのです。

ということで1台のWebサーバで静的コンテンツはKeepAlive on、動的コンテンツはKeepAlive offで構築してみます。(このブログはそのメモ)

1.バーチャルホストを2つ用意する

ApacheのKeepAliveはバーチャルホスト毎に設定できるので、静的コンテンツをPort:80、
動的コンテンツをPort:8080に振り分けるようにします。
KeepAliveTimeoutは今やブロードバンドの時代なので5秒持続させれば十分かな(適当w)
VirtualHostの書き方はググってくらさい。

# Static Contents Side
KeepAlive on
KeepAliveTimeout 5
# Dynamic Contents Side
KeepAlive off

2.振り分け

mod_rewriteでアクセスされたパスがファイルでなければPort:8080に応答させるだけ
バーチャルホスト下のDirectoryディレクティブに書いてもいいし、.htaccessに書いてもよいです。
(KeepAliveのパフォーマンス気にするくらいの人ならhttpd.confに書くと思うけど)
mod_rewriteの条件がもの凄く簡単なのは、試した環境の動的コンテンツ側がSilexになっているからです(手抜きw)

例えば、
http://localhost/hoge/hugaにアクセスするとhttp://localhost:8080/index.php/hoge/hugaが応答して
/hoge/hugaがSilexのコントローラにディスパッチされます。


    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ http://localhost:8080/index.php/$1 [P,L]

チューニングの効果は気休め程度?w
アクセス数上がって捌ききれなくなったらサーバわけるとかeginxにするとか検討するといいと思います。
WordPressでパフォーマンスにお困りの方はeginxにすると幸せになれるみたいですよ。
さくらVPSとnginxリバースプロクシで最速WordPressブログを作る方法(ベンチマーク付き)