TOP書籍連動> Webシステムの高性能化とキャッシュ
まるごと PostgreSQL!
商用データベースに匹敵するWebシステム構築手法

第6回:HTTPキャッシュと出力キャッシュ

著者:大垣靖男(OHGAKI, Yasuo)   2005/5/9
1   2  次のページ
Webシステムの高性能化とキャッシュ

   Webシステムの高性能化では、スケールアウト可能な設計を行い利用可能なキャッシュをできる限り活用することが重要です。Webシステム構築で意識しながら利用しなければならないキャッシュは表1の通りです。
HTTPキャッシュ HTTP 1.1ではキャッシュ機能が強化され、より細かいキャッシュコントロールが可能
出力キャッシュ 動的に生成したページをディスクなどに保存し、DBクエリ、ページ生成負荷を軽減
クエリキャッシュ DBサーバーへのクエリ結果をキャッシュし、クエリ数を削減

表1:キャッシュの種類


   一般に、HTTPキャッシュ、出力キャッシュ、クエリキャッシュの順番で効果が期待できます。キャッシュが活用可能な場合、スケールアウトによりさらに効率の良い高性能化を期待できます。


HTTPキャッシュ

   スケールアウトを行う際、リバースプロキシが効果的に導入可能な場合は、Webサーバーを増やすより、リバースプロキシを導入した方が高い効果を得られます(図19)。

リバースプロキシを利用したスケールアウト
図19:リバースプロキシを利用したスケールアウト


   リバースプロキシを導入する場合は、キャッシュコントロールを考慮することが必須です。リバースプロキシ構成は小規模なWebシステムで、プロキシサーバーとWebサーバーが同一のコンピュータで動作していても十分効果を期待できます。

   環境によって設定ファイルを変更する必要がありますが筆者のテスト環境で動作するsquid.confは、リスト5、リスト6のとおりです。

リスト5:squid.confの設定例−SquidサーバーとWebサーバーが別のホストの場合
http_port 80
cache_dir diskd /var/cache/squid 100 16 256
cache_effective_user squid
visible_hostname test.example.jp
httpd_accel_host 192.168.100.2………キャッシュするWebサーバー
httpd_accel_port 80………Webサーバーのポート
httpd_accel_single_host on
httpd_accel_with_proxy on
httpd_accel_uses_host_header off

acl all src 0.0.0.0/0.0.0.0
http_access allow all

coredump_dir /var/cache/squid
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log

リスト6:squid.confの設定例−SquidサーバーとWebサーバーが同じホストの場合
http_port 80
cache_dir diskd /var/cache/squid 100 16 256
cache_effective_user squid
visible_hostname test.example.jp
httpd_accel_host localhost………同じホストなのでlocalhost
httpd_accel_port 81………Webサーバーのポート
httpd_accel_single_host on
httpd_accel_with_proxy on
httpd_accel_uses_host_header off

acl all src 0.0.0.0/0.0.0.0
http_access allow all

coredump_dir /var/cache/squid
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
キャッシュとログ

   HTTPレベルでキャッシュさせてしまうと、ログが取れないので困るのではないか?と思われる方がいるかもしれません。実際には、通常のWebアプリケーションでは、ページをキャッシュしたせいでログが取れなくて困ることはほとんどありません。アクセスログ収集用にキャッシュ不可に設定した、小さなイメージファイルをページに埋め込み、そのイメージの読み込みログを解析することにより、ほとんどのアクセスログを収集できるからです。収集できないログは、テキストブラウザなどを利用しているユーザーのログです。しかしイメージファイルを読み込まないブラウザを利用しているユーザーは、ごく少数であると考えられます。アクセスログは、個別のユーザーのアクセスを把握する目的ではなく、統計情報として利用されるため、このようなことで困ることはほとんどないでしょう(商用のアクセス解析サービスでも、そのページにイメージファイル、JavaScript、Javaアプレットを埋め込むことによって、アクセスログを収集し解析しています)。
1   2  次のページ

書籍紹介
まるごと PostgreSQL! Vol.1
まるごと PostgreSQL! Vol.1 日本での市場シェアNo.1(オープンソースRDBMS部門)データベースソフトPostgreSQLの最新情報を、開発メンバーを含む豪華執筆陣が多面的かつ詳細に解説します。PostgreSQL用クラスタリング/レプリケーションソフト、PostgreSQL⇔Oracle移行、PostgreSQLによる大規模サイト構築法、新バージョンPostgreSQL 8.0先行レビュー、PostgreSQL用.NETデータプロバイダ等々、他では読めない貴重な記事が満載です。
発売日:2004/12/08発売
定価:\1,890(本体 \1,800+税)
大垣 靖男
著者プロフィール
大垣靖男(OHGAKI, Yasuo)
University of Denver卒。同校にてコンピュータサイエンスとビジネスを学ぶ。株式会社シーエーシーを経て、エレクトロニック・サービス・イニシアチブ有限会社を設立。Linuxはバージョン0.9xの黎明期から利用してるが、オープンソースシステム開発やコミュニティへの参加はエレクトロニック・サービス・イニシアチブ設立後から。PHPプロジェクトのPostgreSQLモジュールのメンテナ、日本PostgreSQLユーザ会の四国地域での活動等を担当している。


INDEX
第6回:HTTPキャッシュと出力キャッシュ
Webシステムの高性能化とキャッシュ
  WebアプリケーションからHTTPキャッシュを制御する