キャッシュ情報セクションは、ファイルキャッシュがどのように使用されているかに関する統計を提供します。ファイルキャッシュには静的コンテンツが書き込まれるため、サーバーは静的コンテンツに対する要求をすばやく処理できます。ファイルキャッシュには、ファイルに関する情報と静的なファイルコンテンツが保存されます。ファイルキャッシュでは、サーバーにより解析される HTML の処理の高速化に使用される情報もキャッシュに書き込まれます。サーブレットや JSP では、別の種類のキャッシュが使用されます。
コンテンツへの更新がスケジュールに従って行われるサイトでは、コンテンツの更新中はキャッシュを停止し、更新完了後にキャッシュを再度起動することを検討してください。キャッシュを無効にすると、パフォーマンスは低下しますが、サーバーは正常に動作します。
パフォーマンス上の理由により、Web Server はキャッシュへの書き込みを次のように行います。
ファイルが小さい場合、そのコンテンツがメモリー (ヒープ) 内のキャッシュに書き込まれる。
ファイルが大きい場合、オープンファイル記述子がキャッシュに書き込まれる (ファイルのオープン/クローズを回避するため)。
次に、perfdump でのキャッシュ統計の表示例を示します。
CacheInfo: ------------------ enabled yes CacheEntries 12/1024 Hit Ratio 46/98 ( 46.94%) Maximum Age 30
次の表に、管理コンソールで表示されるファイルキャッシュ統計を示します。
表 2–4 ファイルキャッシュ統計
キャッシュヒットの合計 |
46 |
キャッシュミスの合計 |
52 |
キャッシュコンテンツヒットの合計 |
0 |
ファイル検索エラーの数 |
9 |
ファイル情報検索の数 |
37 |
ファイル情報検索エラーの数 |
50 |
エントリ数 |
12 |
最大キャッシュサイズ |
1024 |
オープンファイルエントリの数 |
0 |
許可されている最大オープンファイル数 |
1024 |
ヒープサイズ (Heap Size) |
36064 |
最大ヒープキャッシュサイズ |
10735636 |
メモリーマップファイルコンテンツのサイズ |
0 |
最大メモリーマップファイルサイズ |
0 |
エントリの最大継続時間 |
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 バイト未満にするべきです。
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 にオブジェクトを追加すれば、サーバーの実行中にファイルキャッシュを動的に監視および制御できます。
NameTrans 指令をデフォルトオブジェクトに追加します。
NameTrans fn="assign-name" from="/nsfc" name="nsfc"
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: キャッシュ内のファイルを一覧表示する。
?start: キャッシュを起動する。
?stop: キャッシュをシャットダウンする。
?list オプションを選択する場合、そのファイルリストには、ファイル名、一連のフラグ、現在のキャッシュエントリ参照数、ファイルのサイズ、および内部ファイル ID 値が含まれます。フラグは次のとおりです。
C: ファイルのコンテンツがキャッシュに書き込まれている。
D: キャッシュエントリが削除対象としてマークされている。
I: ファイルの情報 (サイズや変更日付など) がキャッシュに書き込まれている。
M: ファイルのコンテンツが仮想メモリー内にマップされている。
O: ファイル記述子がキャッシュに書き込まれている (TransmitFile が true に設定されている場合)。
P: ファイルに非公開データが関連付けられている (shtml ファイルの場合に表示されるはず)。
T: キャッシュエントリが一時ファイルを持っている。
W: キャッシュエントリが書き込みアクセス用としてロックされている。