...

WAS V7.0サーブレット・JSPキャッシュ構成ガイド ISE Webインフラストラクチャー © 2009 IBM Japan Systems Engineering Co., Ltd.

by user

on
Category: Documents
10

views

Report

Comments

Transcript

WAS V7.0サーブレット・JSPキャッシュ構成ガイド ISE Webインフラストラクチャー © 2009 IBM Japan Systems Engineering Co., Ltd.
WAS V7.0サーブレット・JSPキャッシュ構成ガイド
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems
Engineering Co., Ltd.
ISE Webインフラストラクチャー
アジェンダ
1.
2.
3.
4.
2
動的キャッシュ概要
ESIキャッシュ
サーブレット・JSPキャッシュ
参考文献
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
1. 動的キャッシュ概要
3
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
キャッシュの重要性
ƒ Webシステムにおける2つのパフォーマンス指標
スループット
単位時間(秒)あたりにシステムによって処理されるリクエスト数
レスポンスタイム
ユーザーがリクエストを実行してから、すべての結果が戻るまでの時間
ƒ パフォーマンス・チューニングの目的
スループットを最大に、レスポンスタイムを最小にすることを目指す
キャッシュを使用し、スループットおよびレスポンスタイムを向上
⇒ キャッシュ・ポイント、キャッシュ取得対象の検討が必要
4
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
WASシステム上でのキャッシュ・ポイント
WASシステムにおけるキャッシュ・ポイントおよびその種類一覧
WASシステム・コンポーネント
IBM HTTP
Server(IHS)
Webサーバー
・プラグイン
WebSphere
Application Server
(WAS)
データベース
クライアント
Webサービス呼び出し(SOAP/HTTP & JAX-RPC)
ESIキャッシュ
サーブレット・JSPキャッシュ
コマンド・キャッシュ
WebSphere
Enterprise
Service Bus(WESB)
SOAP/HTTP
JAX-RPC
WebSphere
Application Server
(WAS)
データベース
オブジェクト・キャッシュ
Webサービス・クライアント・キャッシュ
Webサービス・キャッシュ
5
IHS、Webサーバー・プラグインは省略
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
キャッシュの種類(1/2)
ƒ ESIキャッシュ
Webサーバー・プラグイン上でのキャッシュ
デフォルト有効
ƒ サーブレット・JSPキャッシュ
アプリケーション・サーバー上でサーブレットやJSPの実行結果をキャッシュ
デフォルト無効
ƒ コマンド・キャッシュ
アプリケーション・サーバー上でコマンド・オブジェクトのインスタンスをキャッシュ
デフォルト無効
ƒ オブジェクト・キャッシュ
アプリケーション・サーバー上でJavaオブジェクトのインスタンスをキャッシュ
デフォルト無効
6
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
キャッシュの種類(2/2)
ƒ Webサービス・クライアント・キャッシュ
Webサービス・リクエスターでのキャッシュ
アプリケーション・サーバー上でWebサービス・プロバイダーからのレスポンスを
キャッシュ
SOAP/HTTPによるJAX-RPCでの呼び出しのみサポート(JAX-WSは未サポート)
デフォルト無効
ƒ Webサービス・キャッシュ
Webサービス・プロバイダーでのキャッシュ
アプリケーション・サーバー上でWebサービスのレスポンスをキャッシュ
SOAP/HTTPによるJAX-RPCでの呼び出しのみサポート(JAX-WSは未サポート)
デフォルト無効
本ガイドでは需要が多く、また比較的設定が容易である
ESIキャッシュ、およびサーブレット・JSPキャッシュの構成を説明
7
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
2.ESIキャッシュ
8
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
ESIキャッシュ
ƒ Webサーバー・プラグイン上でのキャッシュ
ƒ デフォルト有効
ƒ IHS上の静的コンテンツはキャッシュしない(Webサーバー・プラグインが割り振りをお
こなうアプリケーション内のコンテンツをキャッシュ)
ƒ キャッシュ対象は下記2種類
静的コンテンツ
ƒ アプリケーション(EAR)内に含まれるHTMLやGIFといった静的コンテンツをキャッシュ
ƒ ESIキャッシュはデフォルト有効であり、静的コンテンツはデフォルトでキャッシュされるため、サーブレッ
ト・JSPキャッシュが無効でもEAR内の静的コンテンツはキャッシュされる
動的コンテンツ
ƒ サーブレット・JSPキャッシュにキャッシュされた動的コンテンツをキャッシュ
ƒ サーブレット・JSPキャッシュを有効にしており、ESIキャッシュにもキャッシュするように設定している場合
にキャッシュされる(詳細は後述のサーブレット・JSPキャッシュを参照 p.34)
IHS
GIF
9
Webサーバー・プラグイン
HTML
ESIキャッシュ
HTML GIF
JSP
Servlet
WAS
サーブレット・JSP
キャッシュ
JSP
Servlet
EAR
HTML
GIF
Servlet
JSP
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
ESIキャッシュの無効化
ƒ ESIキャッシュの無効化は以下の4通りで実施可能
キャッシュ容量制限
ƒ キャッシュ容量がキャッシュ・サイズ(デフォルト1MB)を超える場合、有効期限に最も近いキャッシュを無
効化
キャッシュ・タイムアウト
ƒ サーブレット・JSPキャッシュにキャッシュされていない静的コンテンツが対象
ƒ タイムアウト値(デフォルト300秒)により、キャッシュを無効化
ƒ デフォルト値を変更する場合は、Webサーバー・プラグインがアクセスするアプリケーション・サーバーの汎
用JVM引数に「-Dcom.ibm.servlet.file.esi.timeOut」を指定(下記例はタイムアウト値を60秒に設定)
例) -Dcom.ibm.servlet.file.esi.timeOut=60
ƒ サーブレット・JSPキャッシュのキャッシュ・エントリーに対しては、cachespec.xmlのtimeoutサブエレメントで
指定
サーブレット・JSPキャッシュの無効化
ƒ サーブレット・JSPキャッシュにキャッシュされていてESIキャッシュにもキャッシュしているコンテンツが対象
ƒ アプリケーション・サーバーからのキャッシュ無効化要求の受信有無をONにしている場合、サーブレット・
JSPキャッシュ上のキャッシュ・エントリーが無効になるとESIキャッシュ上の同じキャッシュ・エントリーも無
効化
CacheMonitorアプリケーションの使用
ƒ CacheMonitorアプリケーションからキャッシュの無効化を実施
ƒ お客様要件に合わせて上記からキャッシュ無効化の方法を選択する
10
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
ESIキャッシュのその他考慮事項
ƒ ESIキャッシュはIHS httpdプロセス(子プロセス)ごとに保持
キャッシュ・エントリーをプロセス間で共有しないため、システム・メモリーを使い切らないように
注意が必要
ƒ DynaCacheEsi.earをデプロイし、esiInvalidationMonitorをONに設定した場合は、Webコ
ンテナー・スレッドが一定数常時確保される
CacheMonitorでESIキャッシュの使用状況を確認する、もしくはサーブレット・JSPキャッシュと無
効化の同期を取る際にこの設定を実施する(詳細はp.13、14を参照)
確保するスレッド数はesiInvalidationMonitorをONに設定したWebサーバーの数分
一度確保したスレッドはDynaCacheEsi停止時まで解放しないため、定期的にSystemOut.logに
WSVR0605W(ハングスレッドのワーニング)が出力されるが、無視してよい
パフォーマンス・テスト実施時のWebコンテナー・スレッド使用状況の確認はこのスレッド数の考
慮も必要
httpdプロセス1
ESIキャッシュ
HTML GIF
JSP
Servlet
各httpdはアクセスが発生
したキャッシュ・エントリー
をそれぞれでキャッシュ
エントリーの共有はしない
httpdプロセス2
ESIキャッシュ
HTML
Servlet
OS
11
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
ESIキャッシュ設定手順(1/2)
ƒ 管理コンソールの下記画面で外部キャッシュ・グループの設定を実施
アプリケーション・サーバー > [アプリケーション・サーバー名] > 動的キャッシュ・サービス >
外部キャッシュ・グループ > EsiInvalidator > 外部キャッシュ・グループ・メンバー > 新規作成
ƒ 外部キャッシュ・グループ「EsiInvalidator」はデフォルト設定済み
「EsiInvalidator」の外部キャッシュ・グループ・メンバーに、アプリケーション・サーバーにアクセ
スする全てのWebサーバーのエントリーを追加
Edge Side Includeを選択し、アドレスに
アプリケーション・サーバーにアクセスする
Webサーバーを指定
12
Webサーバーが複数ある場合は
複数指定
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
ESIキャッシュ設定手順(2/2)
ƒ 管理コンソールの下記画面でESIキャッシュの設定を実施
Web サーバー > [Webサーバー名] > プラグイン・プロパティー > キャッシング
ƒ ESIキャッシュはデフォルト有効
ESIキャッシュとサーブレット・JSPキャッシュ間で無効化の同期を取る場合は、
esiInvalidationMonitorをONに設定(DynaCacheEsi.earのデプロイも必要)
キャッシング設定を変更したら、プラグイン構成ファイルの生成と伝搬を実施
サーブレット・JSPキャッシュとの連携は後述
ESIキャッシュの使用有無(デフォルトON)
plugin-cfg.xmlのesiEnableに対応
アプリケーション・サーバーからのキャッシュ
無効化要求の受信有無(デフォルトOFF)
plugin-cfg.xmlのesiInvalidationMonitorに対応
最大キャッシュ・サイズ(デフォルト1MB)
plugin-cfg.xmlのesiMaxCacheSizeに対応
13
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
ESIキャッシュの確認方法(1/3)
ƒ ESIキャッシュのキャッシュ状況はCacheMonitorアプリケーションで確認可能
ƒ 設定手順は以下のとおり
1) 下記2つのアプリケーションをデプロイ(モジュールのマッピングはクラスターもしくはアプリ
ケーション・サーバーのみ、Webサーバーは含まない)
・CacheMonitor.ear(WAS_INSTALL_ROOT/installableApps下に存在)
・DynaCacheEsi.ear(WAS_INSTALL_ROOT/installableApps下に存在)
2) esiInvalidationMonitorをtrueに設定
管理コンソールで、「Web サーバー > [Webサーバー名] > プラグイン・プロパティー > キャッシング」に
移動し、「通知を受信するために無効化モニターを使用可能にする」を有効にする(前ページ参照)
3) プラグイン構成ファイル(plugin-cfg.xml)の生成、伝搬を実施
14
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
ESIキャッシュの確認方法(2/3)
ƒ ブラウザーからアプリケーション・サーバー上のCacheMonitorアプリケーションにアク
セスし、左メニューの「Edge統計」をクリック
ƒ CacheMonitorのURLは以下のとおり
http://[ホスト名]:[ポート]/cachemonitor
ƒ 「Edge統計」を選択すると、キャッシュ・ヒット
数やキャッシュ・ミス数といったこれまでの統
計情報を表示
URLによるキャッシュ・ミスの数
静的コンテンツに対するキャッシュ・ミスの数
キャッシュIDによるキャッシュミスの数
動的コンテンツに対するキャッシュ・ミスの数
キャッシュのタイムアウト数
タイムアウトにより無効化されたキャッシュの数
ƒ 負荷テストではキャッシュ・ヒット数の値が大
きくなるようにキャッシュ対象、キャッシュ・サ
イズやタイムアウト値のチューニングをおこな
う
ƒ 「キャッシュの消去」をクリックするとESIキャッ
シュ内のキャッシュ・エントリーを無効化する
ƒ 「内容」をクリックするとESIキャッシュのキャッ
シュ・エントリーを確認可能(次ページ参照)
15
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
ESIキャッシュの確認方法(3/3)
ƒ Edge統計画面の「内容」をクリックするとESIキャッシュ上のキャッシュ・エントリーを確
認可能
ƒ 「プロセス」はキャッシュを保持しているhttpd
プロセスのプロセスIDを示す
ƒ 「キャッシュの消去」をクリックするとESIキャッ
シュ内のキャッシュ・エントリーを無効化する
16
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
2.サーブレット・JSPキャッシュ
17
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
サーブレット・JSPキャッシュ
ƒ アプリケーション・サーバー(Webコンテナー)上でのキャッシュ
ƒ デフォルト無効
ƒ サーブレット・JSPキャッシュのキャッシュ・エントリーは前段のコンポーネント(ESIキャッ
シュ)にもキャッシュ可能
ƒ キャッシュ対象は下記2種類
静的コンテンツ
ƒ アプリケーション(EAR)内に含まれるHTMLやGIFといった静的コンテンツをキャッシュ
動的コンテンツ
ƒ EAR内に含まれるサーブレットの実行結果をキャッシュ
ƒ EAR内に含まれるJSPの実行結果をキャッシュ
ƒ キャッシュの設定はcachespec.xmlに定義
アプリケーション・コード内に記述する必要がないため容易に設定可能
キャッシュの無効化を任意のタイミングで実施する際はコーディングが必要な場合もある(p.23)
IHS
GIF
18
Webサーバー・プラグイン
HTML
ESIキャッシュ
HTML GIF
JSP
Servlet
WAS
サーブレット・JSP
キャッシュ
JSP
Servlet
EAR
HTML
GIF
Servlet
JSP
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
キャッシュ・インスタンス
ƒ キャッシュ・エントリーはキャッシュ・インスタンスに保持
サーブレット・JSPキャッシュの場合、サーブレット・キャッシュ・インスタンスを使用
デフォルトではbaseCacheキャッシュ・インスタンスを使用(複数作成することも可能)
キャッシュ・インスタンスごとに有効範囲(任意のクラスターやアプリケーション・サーバーなど)、
JNDI名、キャッシュ・サイズ、ディスク・オフロード(キャッシュのディスク保管)の設定が可能
cachespec.xmlではキャッシュさせるキャッシュ・インスタンスのJNDI名を指定する
ƒ キャッシュ・インスタンスは以下の場合に複数作成
アプリケーションごとにキャッシュ運用を分ける場合
ƒ キャッシュ・サイズやディスク・オフロード、キャッシュの複製といった要件がアプリケーションごとに異なる場
合はキャッシュ・インスタンスを分けることを検討
パフォーマンスを向上させる場合
ƒ キャッシュ・サイズは小さいほどパフォーマンスがよいため、キャッシュ・エントリー数や各エントリーのサイ
ズが大きくパフォーマンスがよくない場合はキャッシュ・インスタンスを分けることを検討
ƒ 通常はデフォルト・キャッシュ・インスタンス(baseCache)を使用で問題ない
アプリケーション・サーバー1
アプリケーション・サーバー2
キャッシュ・インスタンス1
JSP
Servlet
キャッシュ複製
JSP
Servlet
キャッシュ・インスタンス2
JSP
19
Servlet
JSP
Servlet
キャッシュ・インスタンス1は
キャッシュの複製を設定
キャッシュ・インスタンス2は
ディスク・オフロードを設定
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
キャッシュ複製(1/2)
ƒ 同じキャッシュ・インスタンスを利用するアプリケーション・サーバー間(有効範囲がクラス
ターの場合など)ではキャッシュ・エントリーを共有可能
キャッシュ・エントリーを共有することにより、キャッシ・ヒット率を向上させる
各アプリケーション・サーバーを同じ複製ドメインのメンバーとして登録することが前提
複製ドメインはサーブレット・JSPキャッシュ専用に用意することを推奨
複製により各アプリケーション・サーバーのキャッシュ・エントリーが増加する可能性があるため、
アプリケーション・サーバーのヒープ使用量も増加する可能性あり
ƒ 指定する複製タイプにより、共有する情報が異なる(次ページ参照)
クラスター
アプリケーション・サーバー1
アプリケーション・サーバー2
キャッシュ・インスタンス
JSP1
Servlet1
JSP1
Servlet1
キャッシュ複製
Servlet2
JSP2
Servlet2
キャッシュ・エントリーの
無効化も同期
JSP2
各アプリケーション・サーバーのキャッシュ・インスタンス上の
キャッシュ・エントリーを共有
この例の複製タイプは「pushのみ」で全てのエントリーを共有
20
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
キャッシュ複製(2/2)
ƒ キャッシュの複製タイプは以下の3通り存在
pushとpullの両方
ƒ キャッシュID(キャッシュ・エントリーの識別子)のみをキャッシュ・インスタンス間で複製
ƒ コンテンツは該当の要求が来た際にキャッシュIDを基に別アプリケーション・サーバーのキャッシュ・インスタ
ンスから複製(新規にキャッシュ・エントリーを作成するよりも複製の方が負荷は低い)
ƒ 無効化要求はキャッシュ・インスタンス間で共有
ƒ pushのみと比較すると、全てのキャッシュ・コンテンツを保持するわけではないのでキャッシュが使用する
ヒープ使用量は少なくて済む
pushのみ
ƒ キャッシュ・エントリーをキャッシュ・インスタンス間で複製
ƒ 無効化要求はキャッシュ・インスタンス間で共有
ƒ 全てのキャッシュ・エントリーが複製されるため、1つのアプリケーション・サーバーがダウンしても正常なア
プリケーション・サーバーで再度キャッシュを生成する必要はない
共用しない
ƒ キャッシュIDおよびキャッシュ・コンテンツをキャッシュ・インスタンス間で複製しない
ƒ 無効化要求のみキャッシュ・インスタンス間で共有
ƒ 上記以外にも、「pullのみ」という設定があるが推奨されていない
21
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
ディスク・オフロード
ƒ キャッシュ容量がキャッシュ・サイズ(デフォルト2000エントリー)を超える場合、LRU
(Least Recently Used)ルールに従い、メモリー上からエントリーが削除される
ƒ ディスク・オフロードを設定した場合、メモリーから削除されるキャッシュをディスクに保管
することが可能
ディスク・オフロードOFFの場合
ディスク・オフロードONの場合
Servlet3
キャッシュ・インスタンス
JSP1
Servlet2
Servlet1
JSP2
キャッシュ容量がフルの状態で新規キャッシュ・
エントリーがキャッシュされるとLRUルールに従い
キャッシュ・エントリーが削除される
22
Servlet3
キャッシュ・インスタンス
JSP1
Servlet2
Servlet1
JSP2
JSP2
キャッシュ容量がフルの状態で新規キャッシュ・
エントリーがキャッシュされるとLRUルールに従い
削除されるキャッシュ・エントリーはディスクに
保管される
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
サーブレット・JSPキャッシュの無効化
ƒ サーブレット・JSPキャッシュの無効化は以下の5通りで実施可能
キャッシュ容量制限
ƒ キャッシュ容量がキャッシュ・サイズ(デフォルト2000エントリー)を超える場合、LRUルールに従いキャッ
シュ・エントリーを無効化
キャッシュ・タイムアウト
ƒ cachespec.xmlのtimeoutサブエレメントで指定したタイムアウト値により、キャッシュを無効化
ƒ timeoutサブエレメントを指定しない場合、その他の無効化が実行されるまでキャッシュ・エントリーは無限に
保持される
Invalidationエレメントの使用
ƒ cachespec.xmlでinvalidationエレメントを使用し、任意のリクエストに対してキャッシュ無効化を紐付け設定
ƒ 任意のリクエストが実行されると該当のキャッシュを無効化
ƒ 無効化するキャッシュ対象はdependency-idエレメント使用することによりグルーピング可能
キャッシュ操作APIの実装
ƒ アプリケーション・コード内でDistributedMap APIを実装し、サーブレット・キャッシュ・インスタンス内のオブ
ジェクトを直接操作し無効化を実施(次ページ参照)
ƒ DistributedMapはデフォルト・キャッシュ・インスタンス(baseCache)のみに使用可能
ƒ 別途作成したサーブレット・キャッシュ・インスタンスに対しては使用できない
CacheMonitorアプリケーションの使用
ƒ CacheMonitorアプリケーションから任意のキャッシュもしくはキャッシュ・インスタンスを選択し、キャッシュの
無効化を実施
ƒ お客様要件に合わせて上記からキャッシュ無効化の方法を選択する
23
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
<参考>DistributedMap実装例
ƒ デフォルト・キャッシュ・インスタンス内のキャッシュの無効化コーディング例
InitialContext ctx=null;
try {
ctx = new InitialContext();
DistributedMap dm1 = (DistributedMap)ctx.lookup("services/cache/basecache");
Iterator it = dm1.keySet().iterator();
while (it.hasNext()) {
dm1.invalidate(it.next());
}
}catch...
24
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
サーブレット・JSPキャッシュの設定手順
1.
アプリケーション・サーバーでサーブレット・キャッシュを有効に設定
ƒ
2.
クラスター構成の場合はクラスター・メンバー全てに対し、この設定を実施
キャッシュ・インスタンスの設定
ƒ
ƒ
3.
追加でキャッシュ・インスタンスを作成する場合はここで作成
各アプリケーション・サーバーのキャッシュ・インスタンス間でキャッシュの複製をおこなう場合
は、複製ドメインの定義も実施
cachespec.xmlの記述
ƒ
ƒ
ƒ
キャッシュ対象および各キャッシュ対象の設定をcachespec.xmlに記述
cachespec.xmlは各アプリケーションのWebモジュールのWEB-INFディレクトリーに配置
(cachespec.xmlを<WAS_INSTALL_ROOT>/properties下に配置した場合は、グローバル設定と
なり、全てのアプリケーション(EAR)に対してその設定が有効になる)
cachespec.xmlを含むアプリケーションをデプロイ後、キャッシュ対象リクエスト発生時に該当コ
ンテンツがキャッシュされる
詳細は次ページ以降を参照
25
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
1.サーブレット・キャッシュを有効に設定
ƒ 管理コンソールの下記画面でサーブレット・JSPキャッシュを有効に設定
アプリケーション・サーバー > [アプリケーション・サーバー名] > Webコンテナー
ƒ サーブレット・JSPキャッシュはデフォルト無効
クラスター構成の場合は、クラスター・メンバー全てに対し同じ設定を実施
サーブレット・JSPキャッシュの使用有無
(デフォルトOFF)
26
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
2.キャッシュ・インスタンスの設定(1/4)
ƒ キャッシュ複製をおこなう場合は、事前に複製ドメインを作成
ƒ 管理コンソールの下記画面でサーブレット・JSPキャッシュ用複製ドメインを作成
環境 > 複製ドメイン > 新規作成
複製ドメイン名として、任意の名前を指定
レプリカの数は「ドメイン全体」を指定
27
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
2.キャッシュ・インスタンスの設定(2/4)
ƒ 管理コンソールの下記画面でデフォルト・キャッシュ・インスタンスの設定を実施
アプリケーション・サーバー > [アプリケーション・サーバー名] > 動的キャッシュ・サービス
キャッシュ・インスタンスが保持する
キャッシュ・エントリーの最大個数を指定
(デフォルト2000エントリー)
WAS V7.0ではメモリー・キャッシュ・サイズの制限を
有効にすることで、キャッシュのヒープ使用量を制限可能
28
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
2.キャッシュ・インスタンスの設定(3/4)
ƒ デフォルト・キャッシュ・インスタンスの設定の続き(ディスク・オフロードの設定)
ディスク・オフロードの使用有無(デフォルトOFF)
オフロード位置でキャッシュ・エントリーの保管ディレクトリーを指定
デフォルト・ディレクトリーは、<WAS_INSTALL_ROOT>/temp/[ノード名]/
[サーバー名]/_dynacache/[キャッシュ・インスタンスのJNDI名]
サーバー停止時におけるメモリー上の
キャッシュ・エントリーのディスク保管有無
(デフォルトOFF)
29
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
2.キャッシュ・インスタンスの設定(4/4)
ƒ デフォルト・キャッシュ・インスタンスの設定の続き(キャッシュ複製の設定)
キャッシュ複製の使用有無(デフォルトOFF)
フル・グループ複製ドメインに作成した複製ドメインを指定
複製タイプに任意の複製方式を指定(p.21参照)
cachespec.xml内で複製タイプを指定しなかった場合、
ここで設定した複製タイプが指定される
30
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
<参考>キャッシュ・インスタンスの作成
ƒ 別途キャッシュ・インスタンスを作成する場合は、管理コンソールの下記画面で作成
リソース > キャッシュ・インスタンス > サーブレット・キャッシュ・インスタンス > 新規作成
ƒ 作成するキャッシュ・インスタンスの有効範囲を選択し、新規作成
任意のキャッシュ・インスタンス名を指定
任意のJNDI名を指定
ここで指定したJNDI名をcachespec.xmlで設定
以降の設定はデフォルト・キャッシュ・インスタンスの設定と同様
31
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
3.cachespec.xmlの記述(1/4)
ƒ cachespec.xmlはRational Application Developer(RAD)等の開発ソフトウェアを使用して、
アプリケーションのWebモジュールのWEB-INFディレクトリー下に配置
<WAS_INSTALL_ROOT>/properties下のサンプルファイルcachespec.sample.xmlをコピー
開発ソフトウェア上では、cachespec.dtdが見つからないといったエラーが出力されても、このDTD
ファイルは<WAS_INSTALL_ROOT>/properties下に配置されているため問題ない
cachespec.xmlの記述方法は
次ページ以降を参照
cachespec.xmlをWEB-INF下に配置
32
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
3.cachespec.xmlの記述(2/4)
ƒ cachespec.xmlはXMLフォーマットで記述
ƒ 代表的なエレメントは以下の通り(詳細は下記Information Centerを参照)
http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.nd.
doc/info/ae/ae/rdyn_cachespec.html
ƒ cache
cachespec.xmlのルート・エレメント
cache-instanceエレメントおよびcache-entryエレメントを含む
ƒ cache-instance
キャッシュ・エントリーのキャッシュ先インスタンスを指定(指定しない場合は、デフォルト・キャッ
シュ・インスタンスが使用される)
name属性にキャッシュ・インスタンスのJNDI名を指定
ƒ cache-entry
各キャッシュ対象の情報を指定
キャッシュ・エントリー名やキャッシュ生成ルールを指定
cache-entry内のエレメントは次ページを参照
33
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
3.cachespec.xmlの記述(3/4)
ƒ cache-entry内の代表的なエレメントは以下の通り
ƒ class
キャッシュ対象のタイプを指定
サーブレット、JSPは「servlet」を指定し、静的コンテンツは「static」を指定
ƒ name
キャッシュ対象のURIを指定
cachespec.xmlをWebモジュール内に配置する場合は、コンテキスト・ルート下からのパスで指定
し、propertiesディレクトリー下に配置する場合は(グローバル設定)、コンテキスト・ルートを含む
パスで指定
WEB-INF下に配置した場合) /input.jsp
properties下に配置した場合) /PostTestWeb/input.jsp
ƒ sharing-policy
キャッシュ複製の複製タイプを指定
この設定はキャッシュ・インスタンスのキャッシュ複製設定で指定した複製タイプよりも優先される
ƒ property
キャッシュ詳細機能の挙動を指定
ESIキャッシュにもキャッシュさせる場合は以下のように記述
例)
34
<property name="EdgeCacheable">true</property>
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
3.cachespec.xmlの記述(4/4)
ƒ cache-id
キャッシュ対象をキャッシュに保管する際の規則を指定
WASはここで定義されたキャッシュIDによりキャッシュ内のキャッシュ・エントリーを判別する
cache-idには以下のサブエレメントが存在し、サブエレメントで詳細な定義をおこなう
ƒ component
– id属性、type属性を使用してキャッシュIDを生成するための定義を指定
– ここで指定したパラメーターの値を基にキャッシュIDを生成
ƒ timeout
– キャッシュ・エントリーの無効化タイムアウト値を指定
– タイムアウト値を指定しない場合、キャッシュ・エントリーはメモリー上にある限り無限に保持される
ƒ priority
– キャッシュ・エントリーの優先順位を指定
– キャッシュ無効化時に実施されるLRUアルゴリズムにおいて、この優先順位が加重され無効化する
キャッシュ・エントリーを決定
ƒ dependency-id
キャッシュ・エントリーをグループ化する際に指定
ƒ Invalidation
キャッシュIDやdependency-idを指定すると、キャッシュ・エントリーに一致するリクエスト発生時に
それらを無効化する
35
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
cachespec.xmlの設定例1
ƒ http://[ホスト名]/[コンテキスト・ルート名]/input.jspをキャッシュさせる場合の例
下記例では、input.jspはデフォルト・キャッシュ・インスタンスに保管
<?xml version="1.0" ?>
<!DOCTYPE cache SYSTEM "cachespec.dtd">
<cache>
<cache-entry>
<class>servlet</class>
← サーブレットもしくはJSPがキャッシュ対象
<name>/input.jsp</name>
← コンテキスト・ルート下のURIは「input.jsp」、これをキャッシュさせる
<property name=“EdgeCacheable”>true</property>
← ESIキャッシュにもキャッシュさせる
<cache-id>
<priority>1</priority>
← LRUアルゴリズム用優先度は「1」
<timeout>60</timeout>
← キャッシュ・エントリーを60秒で無効化させる
</cache-id>
</cache-entry>
</cache>
36
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
cachespec.xmlの設定例2
ƒ http://[ホスト名]/[コンテキスト・ルート名]/PostServletをキャッシュさせる場合の例
下記例では、PostServletの結果は3つのPOSTパラメーターごとに「CL1CacheInst」キャッシュ・イ
ンスタンスに保管
POSTパラメーター「para1」、「para2」の値ごとにキャッシュ・エントリーを保管
<?xml version="1.0" ?>
<!DOCTYPE cache SYSTEM "cachespec.dtd">
<cache>
<cache-instance name=“services/cache/cl1cacheinst”>
← 別キャッシュ・インスタンスにキャッシュさせる
<cache-entry>
<class>servlet</class>
← サーブレットもしくはJSPがキャッシュ対象
<name>/PostServlet</name>
← コンテキスト・ルート下のURIは「PostServlet」、これをキャッシュさせる
<sharing-policy>shared-push</sharing-policy>
← キャッシュ複製タイプは「pushのみ」
<cache-id>
<component id="reqtype" type="requestType">
<value>POST</value>
← リクエスト・タイプが、「POST」のものに対しキャッシュを生成
</component>
<component id=“para1” type=“parameter”></component>← POSTパラメーター「para1」ごとにキャッシュを生成
<component id=“para2” type=“parameter”></component>← POSTパラメーター「para2」ごとにキャッシュを生成
</cache-id>
</cache-entry>
</cache-instance>
</cache>
37
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
cachespec.xmlの設定例3
ƒ PostServletのキャッシュ・エントリーをinvalidation.html呼び出し時に無効化させる例
<?xml version="1.0" ?>
<!DOCTYPE cache SYSTEM "cachespec.dtd">
<cache>
<cache-entry>
← 1つ目のキャッシュ・エントリー
<class>servlet</class>
← サーブレットもしくはJSPがキャッシュ対象
<name>/PostServlet</name>
← コンテキスト・ルート下のURIは「PostServlet」
<cache-id>
<component id=“para1” type=“parameter”>
<value>TEST</value>
← 「para1」の値が「TEST」のものに対しキャッシュを生成
</component>
<component id=“para2” type=“parameter”></component>← POSTパラメーター「para2」ごとにキャッシュを生成
</cache-id>
<dependency-id>dep1</dependency-id> ← このキャッシュ・エントリーの全キャッシュを「dep1」という名前でグループ化
</cache-entry>
<cache-entry>
← 2つ目のキャッシュ・エントリー
<class>static</class>
← 静的コンテンツがキャッシュ対象
<name>/invalidation.html</name> ← コンテキスト・ルート下のURIは「invalidation.html」
<cache-id>
<timeout>5</timeout>
← キャッシュ・エントリーを5秒で無効化させる
</cache-id>
<invalidation>dep1</invalidation>← このリクエスト発生時に「dep1」に所属するキャッシュ・エントリーを全て無効化
</cache-entry>
</cache>
38
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
サーブレット・JSPキャッシュの確認方法(1/2)
ƒ サーブレット・JSPキャッシュのキャッシュ状況はCacheMonitorで確認可能
CacheMonitor.ear(WAS_INSTALL_ROOT/installableApps下に存在)をデプロイ
モジュールのマッピングはクラスターもしくはアプリケーション・サーバーのみ、Webサーバー
は含まない
ƒ CacheMonitorのURLは以下のとおり
http://[ホスト名]:[ポート]/cachemonitor
ƒ
キャッシュ・インスタンス下のプルダウン・メ
ニューで内容を確認したいキャッシュ・イン
スタンスを選択し「OK」をクリック
ƒ
「キャッシュ統計」で統計情報を確認可能
ƒ
負荷テストではキャッシュ・ヒット数の値が大
きくなるようにキャッシュ対象、キャッシュ・サ
イズやタイムアウト値のチューニングをおこ
なう
ƒ
「キャッシュの消去」をクリックすると対象
キャッシュ・インスタンス上の全てのキャッ
シュ・エントリーを無効化する
ƒ
「キャッシュ内容」をクリックすると対象キャッ
シュ・インスタンス上のキャッシュ・エントリー
を確認可能(次ページ参照)
キャッシュ・インスタンスを選択
(baseCacheはデフォルト・インスタンス)
39
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
サーブレット・JSPキャッシュの確認方法(2/2)
ƒ 「キャッシュ内容」をクリックするとサーブレット・JSPキャッシュ上のキャッシュ・エント
リーを確認可能
ƒ
左記例はp.37の設定例2を設定した場合の
キャッシュ内容例
パラメーター値ごとにキャッシュ・エントリーを
保持している
ƒ
キャッシュ・インスタンス上の
キャッシュ・エントリー一覧を表示
「キャッシュの消去」をクリックすると対象
キャッシュ・インスタンス上の全てのキャッ
シュ・エントリーを無効化する
各キャッシュ・エントリーのキャッシュIDのリン
ク先にある「無効化」をクリックすると、そのエ
ントリーのみ無効化される
ƒ
各キャッシュ・エントリーの以下の項目も確
認可能(キャッシュ・インスタンスもしくは
cachespec.xmlでの設定値)
40
タイムアウト ・・・ 無効化タイムアウト値
依存ID ・・・ dependency-idで指定した値
複製 ・・・ 複製タイプ
優先順位 ・・・ キャッシュ・エントリーの優先
順位
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
4. 参考文献
41
© 2009 IBM Japan Systems Engineering Co., Ltd.
ISE Webインフラストラクチャー
参考文献
ƒ WebSphere Application Server V7.0 管理ガイド「第2部 第3章 パフォーマンス管理 」
http://www.ibm.com/developerworks/jp/websphere/library/was/was7_adminguide/
ƒ WebSphere Application Server V6 Scalability and Performance Handbook
http://www.redbooks.ibm.com/abstracts/SG246392.html?Open
ƒ Mastering DynaCache in WebSphere Commerce
http://www.redbooks.ibm.com/abstracts/SG247393.html?Open
42
© 2009 IBM Japan Systems Engineering Co., Ltd.
Fly UP