Sun Java System Web Server 7.0 パフォーマンスのチューニング、サイジング、およびスケーリング

ファイルキャッシュ情報 (静的コンテンツ)

キャッシュ情報セクションは、ファイルキャッシュがどのように使用されているかに関する統計を提供します。ファイルキャッシュには静的コンテンツが書き込まれるため、サーバーは静的コンテンツに対する要求をすばやく処理できます。ファイルキャッシュには、ファイルに関する情報と静的なファイルコンテンツが保存されます。ファイルキャッシュでは、サーバーにより解析される HTML の処理の高速化に使用される情報もキャッシュに書き込まれます。サーブレットや JSP では、別の種類のキャッシュが使用されます。

コンテンツへの更新がスケジュールに従って行われるサイトでは、コンテンツの更新中はキャッシュを停止し、更新完了後にキャッシュを再度起動することを検討してください。キャッシュを無効にすると、パフォーマンスは低下しますが、サーバーは正常に動作します。

パフォーマンス上の理由により、Web Server はキャッシュへの書き込みを次のように行います。

次に、perfdump でのキャッシュ統計の表示例を示します。

CacheInfo:
------------------
enabled             yes
CacheEntries        12/1024
Hit Ratio           46/98 ( 46.94%)
Maximum Age         30

次の表に、管理コンソールで表示されるファイルキャッシュ統計を示します。

表 2–4 ファイルキャッシュ統計

キャッシュヒットの合計 

46 

キャッシュミスの合計 

52 

キャッシュコンテンツヒットの合計 

ファイル検索エラーの数 

ファイル情報検索の数 

37 

ファイル情報検索エラーの数 

50 

エントリ数 

12 

最大キャッシュサイズ 

1024 

オープンファイルエントリの数 

許可されている最大オープンファイル数 

1024 

ヒープサイズ (Heap Size) 

36064 

最大ヒープキャッシュサイズ 

10735636 

メモリーマップファイルコンテンツのサイズ 

最大メモリーマップファイルサイズ 

エントリの最大継続時間 

30 

有効

キャッシュが無効になっていると、このセクションの残りの部分が perdump で表示されません。管理コンソールでは、「ファイルキャッシュ統計」セクションの値としてゼロが表示されます。

チューニング

キャッシュはデフォルトで有効になっています。管理コンソールでこれを無効にするには、構成の「パフォーマンス」タブ ⇒「キャッシュ」サブタブの「ファイルキャッシュ」の下にある、「ファイルキャッシュ」の「有効」ボックスの選択を解除します。コマンド行インタフェースでこれを無効にするには、wadm set-file-cache-prop を使って enabled プロパティーを false に設定します。

キャッシュエントリ数

キャッシュエントリの現在の数と最大数の両方が、perfdump に表示されます。管理コンソールでは、それらは「エントリ数」および「最大キャッシュサイズ」と呼ばれます。単一のキャッシュエントリは単一の URI を表します。

チューニング

管理コンソールでキャッシュエントリの最大数を設定するには、構成の「パフォーマンス」タブ ⇒「キャッシュ」タブの、「ファイルキャッシュ」の下にある「最大エントリ数」フィールドを使用します。コマンド行インタフェースでは、wadm set-file-cache-prop を使って max-entries プロパティーを設定します。デフォルトは 1024 です。値の範囲は 1 〜 1048576 です。

ヒット率 (キャッシュヒット数 / キャッシュ検索数)

perfdump 経由で利用可能なヒット率は、キャッシュ検索数に対するファイルキャッシュヒット数です。100% に近い数値が、ファイルキャッシュが効果的に機能していることを示しているのに対し、0% に近い数値は、ファイルキャッシュがあまり多くの要求を処理できていないことを示している可能性があります。

管理コンソール経由で提供される統計に基づいてこの数値を手動で計算するには、「キャッシュヒットの合計」と「キャッシュミスの合計」を足したもので、「キャッシュヒットの合計」を割ります。

この設定はチューニング不可能です。

最大継続時間

このフィールドには、有効なキャッシュエントリの最大継続時間が表示されます。このパラメータは、ファイルがキャッシュに書き込まれたあと、そのキャッシュ情報がどのくらいの期間使用されるかを制御します。最大継続時間を経過したエントリは、同じファイルの新しいエントリで置き換えられます。

チューニング

コンテンツを定期的に更新 (既存のファイルを変更) するかどうかに基づいて最大時間を設定します。たとえば、コンテンツが定期的に 1 日に 4 回更新される場合、最大時間を 21600 秒 (6 時間) に設定できます。それ以外の場合、最大時間には、ファイルが変更されたあと、以前のバージョンのコンテンツファイルを提供する最大時間を設定することを検討してください。コンテンツの変更頻度が低い Web サイトでは、パフォーマンスを改善するためにこの値を増やすことをお勧めします。

管理コンソールで最大継続時間を設定するには、構成の「パフォーマンス」タブ ⇒「キャッシュ」タブの、「ファイルキャッシュ」の下にある「最大継続時間」フィールドを使用します。コマンド行インタフェースでは、wadm set-file-cache-prop を使って max-age プロパティーを変更します。デフォルトは 30 秒です。値の範囲は 0.001 〜 3600 です。

最大ヒープキャッシュサイズ

最適なキャッシュヒープサイズは、システムメモリーの空き容量がどのくらい存在するかによって異なります。ヒープサイズを大きくすれば、Web Server がより多くのコンテンツをキャッシュに書き込めるため、ヒット率も向上することになります。ただし、オペレーティングシステムがキャッシュに書き込まれたファイルのページングを開始するほどヒープサイズを大きくすべきではありません。

チューニング

管理コンソールで最大ヒープサイズを設定するには、構成の「パフォーマンス」タブ ⇒「キャッシュ」タブの、「ファイルキャッシュ」の下にある「最大ヒープスペースサイズ」フィールドを使用します。コマンド行インタフェースでは、wadm set-file-cache-prop を使って max-heap-space プロパティーを変更します。デフォルト値は 10485760 バイトです。値の範囲は 0 〜 9223372036854775807 です。32 ビット Web Server では、プロセスはファイルキャッシュ用に 4G バイトのアドレス空間を使用するため、この値は 4G バイト未満にするべきです。

nocache パラメータの使用

Service 関数send-file でパラメータ nocache を使えば、ある特定のディレクトリ内のファイルをキャッシュに書き込まないように指定できます。この変更を行うには obj.conf を編集します。たとえば、変更頻度が高すぎるためにキャッシュに書き込んでもあまり役に立たないような一連のファイルが存在する場合、それらのファイルをあるディレクトリに格納し、obj.conf を編集してそのディレクトリ内のファイルをキャッシュに書き込まないようにサーバーに指示することができます。

<Object name=default>
...
NameTrans fn="pfx2dir" from="/myurl" dir="/export/mydir"
name="myname"
...
Service method=(GET|HEAD|POST) type=*~magnus-internal/*
fn=send-file
...
</Object>
<Object name="myname">
Service method=(GET|HEAD) type=*~magnus-internal/* fn=send-file
nocache=""
</Object>

この例では、URL プレフィックス /myurl によって /export/mydir/ 内の静的ファイルが要求された際に、サーバーはそれらのファイルをキャッシュに書き込みません。obj.conf の編集方法の詳細については、『Sun Java System Web Server 7.0 Administrator’s Configuration File Reference 』を参照してください。

ファイルキャッシュの動的な制御と監視

obj.conf にオブジェクトを追加すれば、サーバーの実行中にファイルキャッシュを動的に監視および制御できます。

Procedureファイルキャッシュを制御および監視する

  1. NameTrans 指令をデフォルトオブジェクトに追加します。

    NameTrans fn="assign-name" from="/nsfc" name="nsfc"

  2. nsfc オブジェクトの定義を追加します。

    <Object name="nsfc">
    Service fn="service-nsfc-dump"
    </Object>

    これにより、ファイルキャッシュを制御および監視するための関数 (nsfc-dump) に、URI /nfsc 経由でアクセスできるようになります。別の URI を使用するには、NameTrans 指令の from パラメータを変更します。

    次に、この URI へのアクセス時に表示される情報の例を示します。


    Sun Java System File Cache Status (pid 3602)
    
    The file cache is enabled.
    Cache resource utilization
    
    Number of cached file entries = 174968 (152 bytes each, 26595136 total bytes)
    Heap space used for cache = 1882632616/1882632760 bytes
    Mapped memory used for medium file contents = 0/1 bytes
    Number of cache lookup hits = 47615653/48089040 ( 99.02 %)
    Number of hits/misses on cached file info = 23720344/324195
    Number of hits/misses on cached file content = 16247503/174985
    Number of outdated cache entries deleted = 0
    Number of cache entry replacements = 0
    Total number of cache entries deleted = 0
    
    Parameter settings
    
    ReplaceFiles: false
    ReplaceInterval: 1 milliseconds
    HitOrder: false
    CacheFileContent: true
    TransmitFile: false
    MaxAge: 3600 seconds
    MaxFiles: 600000 files
    SmallFileSizeLimit: 500000 bytes
    MediumFileSizeLimit: 1000001 bytes
    BufferSize: 8192 bytes
    
    CopyFiles: false
    Directory for temporary files: /tmp
    Hash table size: 1200007 buckets

    この URI へのアクセス時には、クエリー文字列を含めることができます。次の値が認識されます。

    • ?list: キャッシュ内のファイルを一覧表示する。

    • ?refresh=n: n 秒ごとにクライアントがページの再読み込みを行うようにする。

    • ?restart: キャッシュが停止後、再起動されるようにする。

    • ?start: キャッシュを起動する。

    • ?stop: キャッシュをシャットダウンする。

    ?list オプションを選択する場合、そのファイルリストには、ファイル名、一連のフラグ、現在のキャッシュエントリ参照数、ファイルのサイズ、および内部ファイル ID 値が含まれます。フラグは次のとおりです。

    • C: ファイルのコンテンツがキャッシュに書き込まれている。

    • D: キャッシュエントリが削除対象としてマークされている。

    • E: PR_GetFileInfo() がこのファイルでエラーを返した。

    • I: ファイルの情報 (サイズや変更日付など) がキャッシュに書き込まれている。

    • M: ファイルのコンテンツが仮想メモリー内にマップされている。

    • O: ファイル記述子がキャッシュに書き込まれている (TransmitFiletrue に設定されている場合)。

    • P: ファイルに非公開データが関連付けられている (shtml ファイルの場合に表示されるはず)。

    • T: キャッシュエントリが一時ファイルを持っている。

    • W: キャッシュエントリが書き込みアクセス用としてロックされている。