« ThinkITのPHP開発手法の第三回目の連載が掲載されました! | メイン | 開発合宿幹事の為の Tips »

データキャッシュを利用したウェブサーバの高速化
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

こんにちは satoです

Aapcheでproxyサーバを利用している場合、頻繁にアクセスされて、なおかつ
更新の少ないデータ、(フォト蔵や mixiでいう マイピクチャーなど)
は proxyサーバにキャッシュするとレスポンスが良くなります。

mod_proxy_balancerと mod_disk_cache を利用して、proxyサーバに
データをキャッシュする手順を紹介します


<VirtualHost * *:443>
ServerName example.com
ProxyPass /img ! # cssやイメージファイルは proxyしないでローカル参照
ProxyPass /css !
<Proxy balancer://web>
AddOutputFilterByType DEFLATE text/html text/css application/x-javascript
BalancerMember http://10.0.0.1 loadfactor=10 keepalive=On
BalancerMember http://10.0.0.2 loadfactor=10 keepalive=On
BalancerMember http://10.0.0.3 loadfactor=10 keepalive=On
BalancerMember http://10.0.0.4 loadfactor=10 keepalive=On
</Proxy>
ProxyPass / balancer://web/ timeout=2
# キャッシュの設定
<IfModule mod_cache.c>
<IfModule mod_disk_cache.c>
CacheRoot /usr/local/apache2/cache
CacheIgnoreCacheControl On
CacheIgnoreHeaders Set-Cookie
CacheEnable disk /bin/my_pic/
CacheMaxFileSize 1024000
CacheMinFileSize 64
CacheDefaultExpire 86400
CacheDirLevels 5
CacheDirLength 3
</IfModule>
</IfModule>
</VirtualHost>


CacheRoot - キャッシュの保存先を設定します
CacheIgnoreHeaders Set-Cookie - cookieはキャッシュしないようにします
CacheEnable disk /bin/my_pic/ - キャッシュするディレクトリを指定します
CacheMaxFileSize 1024000 - キャッシュするファイルの最大サイズを指定します
CacheMinFileSize 64 - キャッシュするファイルの最小サイズを指定します
CacheDefaultExpire 86400 - キャッシュがエクスパイアされるまでの時間を指定します
CacheDirLevels 5 - キャッシュのサブディレクトリの深さを指定します
CacheDirLength 3 - サブディレクトリ名の文字

こんな感じでキャッシュが使用されるようになります。

最新のファイルなどのアクセス頻度が多い場合には

/new/

などと時間で参照先のディレクトリが変わるようにしておいて
new のディレクトリをキャッシュするようにすると良いかもしれません。

設定はSoftware Design (ソフトウエア デザイン) 2007年 01月号を参考にしました。
こちらには mod_mem_cache の設定方法なども詳しく書いてあります

トラックバック

このエントリーのトラックバックURL:
http://www.unoh.net/mt32/mt-tb.cgi/748

コメントを投稿


画像の中に見える文字を入力してください。