Apache 2.2でWebサイトをパフォーマンスアップ!
 − 最新Apacheの機能と設定方法教えます −

鶴長 鎮一(book@tsurunaga.jp)
2006/3/14

強化されたドキュメントキャッシュ機能を使う

 ドキュメントキャッシュ機能を導入すると、Apacheの応答性を向上させることができます。

 従来のApache 2.0でも、mod_file_cacheモジュールを使用することで通常コンテンツのレスポンスを向上させることができました。ただし、mod_file_cacheの仕組みはApacheの起動時にファイルをメモリに読み込ませるというもので、コンテンツに変更があった場合は再起動が必要になるなど、動的なキャッシングには対応していませんでした。

 Apache 2.2では、RFC 2616に準拠したHTTPコンテンツキャッシュが可能になりました。Cache-Controlヘッダを使ったキャッシュ制御にも対応しており、静的コンテンツだけでなく動的コンテンツのキャッシングも可能です。Apache側の設定により、URLごとにキャッシュ機能の有効/無効を制御することもできます。

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta http-equiv="Cache-Control" content="public">
        <title>Cache Test</title>
    </head>
    <body>
        <h1>CahceのTestです</h1>
    </body>
</html>
Cache-Controlヘッダによるキャッシュ機能の制御例

ドキュメントキャッシュ機能の導入

 キャッシュ機能はデフォルトでは無効になっています。有効にするには、各キャッシュモジュールを組み込む必要があります。ここではDSOを用いず、静的に組み込む方法を紹介します。

 まずApache 2.2のソースアーカイブをミラーサイト(http://httpd.apache.org/download.cgi)からダウンロードし、展開後configureを実行します。

# tar xvfz httpd-2.2.0.tar.gz
# cd httpd-2.2.0
# ./configure --enable-cache --enable-disk-cache --enable-mem-cache

 configure実行の際に、「--enable-cache」でドキュメントキャッシュ機能を有効にし、「--enable-disk-cache」でディスクキャッシュ、「--enable-mem-cache」でメモリキャッシュにそれぞれ対応させます。その後make、make installを実行し、/usr/local/apache2にファイルをインストールします。

# make
# make install

 インストール終了後、モジュールが組み込まれているか否かを「httpd -M」で確認します。今回はDSOを利用していないため、「httpd -l」でも確認できます。

# /usr/local/apache2/bin/httpd -M
Loaded Modules:
(省略)
 cache_module (static)
 disk_cache_module (static)
 mem_cache_module (static)
(省略)

または、

# /usr/local/apache2/bin/httpd -l
(省略)
  mod_cache.c
  mod_disk_cache.c
  mod_mem_cache.c
(省略)

ドキュメントキャッシュ機能の設定

 次にhttpd.confファイルを編集し、mod_cache、mod_disk_cache、mod_mem_cacheモジュールの設定を行います。httpd.confファイルはデフォルトでは/usr/local/apache2/confディレクトリにあります。

<IfModule mod_cache.c>
    #ディスクキャッシュを用いる場合
    <IfModule mod_disk_cache.c>
        CacheRoot /usr/local/apache2/cache  #キャッシュデータの保管先
        CacheEnable disk /                  #キャッシュ対象URL
        CacheDirLevels 5                    #キャッシュデータを保管するディレクトリ階層の深さ
        CacheDirLength 3                    #キャッシュデータを保管するディレクトリ名の文字数
    </IfModule>

    #メモリキャッシュを用いる場合
    <IfModule mod_mem_cache.c>
        CacheEnable mem /           #キャッシュ対象URL
        MCacheSize 4096             #キャッシュメモリの最大値(kbytes)
        MCacheMaxObjectCount 100    #キャッシュに保管するドキュメントの最大数
        MCacheMinObjectSize 1       #キャッシュに保管するドキュメントの最小サイズ(bytes)
        MCacheMaxObjectSize 2048    #キャッシュに保管するドキュメント1つ当たりの最大値(bytes)
    </IfModule>
</IfModule>

 「CacheEnable」に続けて、ディスクキャッシュを利用する場合は「disk」、メモリキャッシュを利用する場合は「mem」を指定し、キャッシング対象とするURLを指定します。上の例では同じURL「/」とそのサブディレクトリに対し、ディスクキャッシュとメモリキャッシュの両方を設定していますが、実際はどちらか1つを利用するか、別のURLに対して設定するようにします。

 メモリキャッシュは高いパフォーマンスを得ることができますが、1byte当たりのコストがディスクに比べ依然高価なため、大容量のキャッシュストレージを必要とする場合はディスクキャッシュを用います。

 特定URLのキャッシュを無効化する場合は、「CacheDisable /foo/bar」のような指定を併せて行います。

 httpd.confファイル修正後、キャッシュデータを格納するディレクトリを作成し、オーナーをApacheのユーザー/グループ名に変更します。

# mkdir /usr/local/apache2/cache
# chown daemon.daemon /usr/local/apache2/cache
注:Apache 2.2のデフォルトユーザー/グループはdaemonです。必要に応じて適宜変更します。

# /usr/local/apache2/bin/apachectl start

 最後にApacheを起動または再起動し、動作を確認します。ディスクキャッシュが機能していれば、キャッシュされたドキュメントが/usr/local/apache2/cache下に保管されていることが確認できます。

2/3

Index
Apache 2.2でWebサイトをパフォーマンスアップ!
 最新Apacheの機能と設定方法教えます
  Page 1
Apache 2.2の主な変更点
Page 2
強化されたドキュメントキャッシュ機能を使う
 ドキュメントキャッシュ機能の導入
 ドキュメントキャッシュ機能の設定
  Page 3
ロードバランスクラスタを使う
 ロードバランス機能の導入
 ロードバランス機能の設定

Linux Square全記事インデックス


 Linux Squareフォーラム サーバ構築・運用関連記事
連載:Heartbeatでかんたんクラスタリング(連載中)
オープンソースソフトウェアの「Heartbeat」を使ってHAクラスタを実現し、サービスを「落とさない」仕組みを実現します
特集:Apache 2.2でWebサイトをパフォーマンスアップ!
最新安定版Apache 2.2は、何が変わったのか? 最新のApacheを新機能の使い方とともに解説する
連載:実用 Apache 2.0運用・管理術(全8回)
本連載では、Apache 2.0の運用や管理方法を解説する。まず必須設定と基本的なセキュリティ対策を行い今後の運用に備える
連載:実用 BIND 9で作るDNSサーバ(全15回)
本連載では、BIND 9の構築/運用方法を解説していく。実際に役立つことを目的に、セキュリティや大規模運用などのテーマを取り上げていく
連載:実用qmailサーバ運用・管理術(全14回)
本連載を通して、qmailによるメールサーバの高度な構築・運用・管理術を紹介。SPAM対策やML管理からサーバでのウイルスチェックなどまで
特集:Samba 3.0の全貌 改訂版
Samba 3.0リリースから8カ月。ここであらためて、Samba 3.0系列の新機能、インストール方法、国際化の現状を解説する

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間