ibm software group presentation templatepublic.dhe.ibm.com/software/dw/jp/websphere/was/was7...4 ise...
TRANSCRIPT
© 2009 IBM Japan Systems Engineering Co., Ltd.
WAS V7.0サーブレット・JSPキャッシュ構成ガイド
ISE Webインフラストラクチャー
2
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
アジェンダ
1. 動的キャッシュ概要
2. ESIキャッシュ
3. サーブレット・JSPキャッシュ
4. 参考文献
3
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
1. 動的キャッシュ概要
4
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
キャッシュの重要性
Webシステムにおける2つのパフォーマンス指標スループット
単位時間(秒)あたりにシステムによって処理されるリクエスト数
レスポンスタイムユーザーがリクエストを実行してから、すべての結果が戻るまでの時間
パフォーマンス・チューニングの目的スループットを最大に、レスポンスタイムを最小にすることを目指す
キャッシュを使用し、スループットおよびレスポンスタイムを向上⇒ キャッシュ・ポイント、キャッシュ取得対象の検討が必要
5
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
WebSphereApplication Server
(WAS)
WebSphereEnterprise
Service Bus(WESB)
WASシステム上でのキャッシュ・ポイント
WASシステムにおけるキャッシュ・ポイントおよびその種類一覧
クライアント
IBM HTTPServer(IHS)
Webサーバー・プラグイン
WebSphereApplication Server
(WAS)データベース
データベース
Webサービス呼び出し(SOAP/HTTP & JAX-RPC)
SOAP/HTTPJAX-RPC
WASシステム・コンポーネント
ESIキャッシュ
サーブレット・JSPキャッシュ
コマンド・キャッシュ
オブジェクト・キャッシュ
Webサービス・クライアント・キャッシュ
Webサービス・キャッシュ IHS、Webサーバー・プラグインは省略
6
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
キャッシュの種類(1/2)
ESIキャッシュWebサーバー・プラグイン上でのキャッシュデフォルト有効
サーブレット・JSPキャッシュアプリケーション・サーバー上でサーブレットやJSPの実行結果をキャッシュデフォルト無効
コマンド・キャッシュアプリケーション・サーバー上でコマンド・オブジェクトのインスタンスをキャッシュデフォルト無効
オブジェクト・キャッシュアプリケーション・サーバー上でJavaオブジェクトのインスタンスをキャッシュデフォルト無効
7
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
キャッシュの種類(2/2)
Webサービス・クライアント・キャッシュWebサービス・リクエスターでのキャッシュアプリケーション・サーバー上でWebサービス・プロバイダーからのレスポンスをキャッシュSOAP/HTTPによるJAX-RPCでの呼び出しのみサポート(JAX-WSは未サポート)デフォルト無効
Webサービス・キャッシュWebサービス・プロバイダーでのキャッシュアプリケーション・サーバー上でWebサービスのレスポンスをキャッシュSOAP/HTTPによるJAX-RPCでの呼び出しのみサポート(JAX-WSは未サポート)デフォルト無効
本ガイドでは需要が多く、また比較的設定が容易であるESIキャッシュ、およびサーブレット・JSPキャッシュの構成を説明
8
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
2.ESIキャッシュ
9
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
ESIキャッシュ
Webサーバー・プラグイン上でのキャッシュ
デフォルト有効
IHS上の静的コンテンツはキャッシュしない(Webサーバー・プラグインが割り振りをおこなうアプリケーション内のコンテンツをキャッシュ)
キャッシュ対象は下記2種類静的コンテンツ
アプリケーション(EAR)内に含まれるHTMLやGIFといった静的コンテンツをキャッシュESIキャッシュはデフォルト有効であり、静的コンテンツはデフォルトでキャッシュされるため、サーブレット・JSPキャッシュが無効でもEAR内の静的コンテンツはキャッシュされる
動的コンテンツサーブレット・JSPキャッシュにキャッシュされた動的コンテンツをキャッシュサーブレット・JSPキャッシュを有効にしており、ESIキャッシュにもキャッシュするように設定している場合にキャッシュされる(詳細は後述のサーブレット・JSPキャッシュを参照 p.34)
IHS Webサーバー・プラグイン WAS
GIF HTML GIFHTML JSP Servletサーブレット・JSPキャッシュJSPJSP ServletServlet
HTML GIF
ESIキャッシュ
ServletServlet
EAR
JSPJSP
10
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
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アプリケーションからキャッシュの無効化を実施
お客様要件に合わせて上記からキャッシュ無効化の方法を選択する
11
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
ESIキャッシュのその他考慮事項
ESIキャッシュはIHS httpdプロセス(子プロセス)ごとに保持キャッシュ・エントリーをプロセス間で共有しないため、システム・メモリーを使い切らないように注意が必要
DynaCacheEsi.earをデプロイし、esiInvalidationMonitorをONに設定した場合は、Webコンテナー・スレッドが一定数常時確保される
CacheMonitorでESIキャッシュの使用状況を確認する、もしくはサーブレット・JSPキャッシュと無効化の同期を取る際にこの設定を実施する(詳細はp.13、14を参照)確保するスレッド数はesiInvalidationMonitorをONに設定したWebサーバーの数分一度確保したスレッドはDynaCacheEsi停止時まで解放しないため、定期的にSystemOut.logにWSVR0605W(ハングスレッドのワーニング)が出力されるが、無視してよいパフォーマンス・テスト実施時のWebコンテナー・スレッド使用状況の確認はこのスレッド数の考慮も必要
OS
GIFHTMLESIキャッシュ
JSP Servlet
httpdプロセス1
HTMLESIキャッシュ
Servlet
httpdプロセス2各httpdはアクセスが発生したキャッシュ・エントリーをそれぞれでキャッシュ
エントリーの共有はしない
12
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
ESIキャッシュ設定手順(1/2)
管理コンソールの下記画面で外部キャッシュ・グループの設定を実施アプリケーション・サーバー > [アプリケーション・サーバー名] > 動的キャッシュ・サービス >外部キャッシュ・グループ > EsiInvalidator > 外部キャッシュ・グループ・メンバー > 新規作成
外部キャッシュ・グループ「EsiInvalidator」はデフォルト設定済み「EsiInvalidator」の外部キャッシュ・グループ・メンバーに、アプリケーション・サーバーにアクセスする全てのWebサーバーのエントリーを追加
Edge Side Includeを選択し、アドレスにアプリケーション・サーバーにアクセスするWebサーバーを指定
Webサーバーが複数ある場合は複数指定
13
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
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に対応
14
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
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)の生成、伝搬を実施
15
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
ESIキャッシュの確認方法(2/3)
ブラウザーからアプリケーション・サーバー上のCacheMonitorアプリケーションにアクセスし、左メニューの「Edge統計」をクリック
CacheMonitorのURLは以下のとおりhttp://[ホスト名]:[ポート]/cachemonitor
「Edge統計」を選択すると、キャッシュ・ヒット数やキャッシュ・ミス数といったこれまでの統計情報を表示
URLによるキャッシュ・ミスの数静的コンテンツに対するキャッシュ・ミスの数
キャッシュIDによるキャッシュミスの数動的コンテンツに対するキャッシュ・ミスの数
キャッシュのタイムアウト数タイムアウトにより無効化されたキャッシュの数
負荷テストではキャッシュ・ヒット数の値が大きくなるようにキャッシュ対象、キャッシュ・サイズやタイムアウト値のチューニングをおこなう
「キャッシュの消去」をクリックするとESIキャッシュ内のキャッシュ・エントリーを無効化する
「内容」をクリックするとESIキャッシュのキャッシュ・エントリーを確認可能(次ページ参照)
16
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
ESIキャッシュの確認方法(3/3)
Edge統計画面の「内容」をクリックするとESIキャッシュ上のキャッシュ・エントリーを確認可能
「プロセス」はキャッシュを保持しているhttpdプロセスのプロセスIDを示す
「キャッシュの消去」をクリックするとESIキャッシュ内のキャッシュ・エントリーを無効化する
17
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
2.サーブレット・JSPキャッシュ
18
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
サーブレット・JSPキャッシュ
アプリケーション・サーバー(Webコンテナー)上でのキャッシュ
デフォルト無効
サーブレット・JSPキャッシュのキャッシュ・エントリーは前段のコンポーネント(ESIキャッシュ)にもキャッシュ可能
キャッシュ対象は下記2種類静的コンテンツ
アプリケーション(EAR)内に含まれるHTMLやGIFといった静的コンテンツをキャッシュ
動的コンテンツEAR内に含まれるサーブレットの実行結果をキャッシュEAR内に含まれるJSPの実行結果をキャッシュ
キャッシュの設定はcachespec.xmlに定義アプリケーション・コード内に記述する必要がないため容易に設定可能キャッシュの無効化を任意のタイミングで実施する際はコーディングが必要な場合もある(p.23)
IHS Webサーバー・プラグイン WAS
GIF HTML GIFHTML JSP Servletサーブレット・JSPキャッシュJSPJSP ServletServlet
HTML GIF
ESIキャッシュ
ServletServlet
EAR
JSPJSP
19
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
キャッシュ・インスタンス2
キャッシュ・インスタンス
キャッシュ・エントリーはキャッシュ・インスタンスに保持サーブレット・JSPキャッシュの場合、サーブレット・キャッシュ・インスタンスを使用デフォルトではbaseCacheキャッシュ・インスタンスを使用(複数作成することも可能)キャッシュ・インスタンスごとに有効範囲(任意のクラスターやアプリケーション・サーバーなど)、JNDI名、キャッシュ・サイズ、ディスク・オフロード(キャッシュのディスク保管)の設定が可能cachespec.xmlではキャッシュさせるキャッシュ・インスタンスのJNDI名を指定する
キャッシュ・インスタンスは以下の場合に複数作成アプリケーションごとにキャッシュ運用を分ける場合
キャッシュ・サイズやディスク・オフロード、キャッシュの複製といった要件がアプリケーションごとに異なる場合はキャッシュ・インスタンスを分けることを検討
パフォーマンスを向上させる場合キャッシュ・サイズは小さいほどパフォーマンスがよいため、キャッシュ・エントリー数や各エントリーのサイズが大きくパフォーマンスがよくない場合はキャッシュ・インスタンスを分けることを検討
通常はデフォルト・キャッシュ・インスタンス(baseCache)を使用で問題ない
キャッシュ・インスタンス1JSP Servlet
アプリケーション・サーバー1
JSP Servlet
JSP Servlet
アプリケーション・サーバー2
JSP Servlet
キャッシュ複製
キャッシュ・インスタンス1はキャッシュの複製を設定
キャッシュ・インスタンス2はディスク・オフロードを設定
20
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
キャッシュ複製(1/2)
同じキャッシュ・インスタンスを利用するアプリケーション・サーバー間(有効範囲がクラスターの場合など)ではキャッシュ・エントリーを共有可能
キャッシュ・エントリーを共有することにより、キャッシ・ヒット率を向上させる各アプリケーション・サーバーを同じ複製ドメインのメンバーとして登録することが前提複製ドメインはサーブレット・JSPキャッシュ専用に用意することを推奨複製により各アプリケーション・サーバーのキャッシュ・エントリーが増加する可能性があるため、アプリケーション・サーバーのヒープ使用量も増加する可能性あり
指定する複製タイプにより、共有する情報が異なる(次ページ参照)
キャッシュ・インスタンス
アプリケーション・サーバー1 アプリケーション・サーバー2
キャッシュ複製
クラスター
JSP1 Servlet1
JSP2Servlet2
JSP1 Servlet1
JSP2Servlet2
キャッシュ・エントリーの無効化も同期
各アプリケーション・サーバーのキャッシュ・インスタンス上のキャッシュ・エントリーを共有この例の複製タイプは「pushのみ」で全てのエントリーを共有
21
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
キャッシュ複製(2/2)
キャッシュの複製タイプは以下の3通り存在pushとpullの両方
キャッシュID(キャッシュ・エントリーの識別子)のみをキャッシュ・インスタンス間で複製コンテンツは該当の要求が来た際にキャッシュIDを基に別アプリケーション・サーバーのキャッシュ・インスタンスから複製(新規にキャッシュ・エントリーを作成するよりも複製の方が負荷は低い)無効化要求はキャッシュ・インスタンス間で共有pushのみと比較すると、全てのキャッシュ・コンテンツを保持するわけではないのでキャッシュが使用するヒープ使用量は少なくて済む
pushのみキャッシュ・エントリーをキャッシュ・インスタンス間で複製無効化要求はキャッシュ・インスタンス間で共有全てのキャッシュ・エントリーが複製されるため、1つのアプリケーション・サーバーがダウンしても正常なアプリケーション・サーバーで再度キャッシュを生成する必要はない
共用しないキャッシュIDおよびキャッシュ・コンテンツをキャッシュ・インスタンス間で複製しない無効化要求のみキャッシュ・インスタンス間で共有
上記以外にも、「pullのみ」という設定があるが推奨されていない
22
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
ディスク・オフロード
キャッシュ容量がキャッシュ・サイズ(デフォルト2000エントリー)を超える場合、LRU(Least Recently Used)ルールに従い、メモリー上からエントリーが削除される
ディスク・オフロードを設定した場合、メモリーから削除されるキャッシュをディスクに保管することが可能
キャッシュ・インスタンス
JSP1 Servlet1
JSP2Servlet2
ディスク・オフロードOFFの場合
キャッシュ容量がフルの状態で新規キャッシュ・エントリーがキャッシュされるとLRUルールに従いキャッシュ・エントリーが削除される
キャッシュ・インスタンス
JSP1 Servlet1
JSP2Servlet2
ディスク・オフロードONの場合
キャッシュ容量がフルの状態で新規キャッシュ・エントリーがキャッシュされるとLRUルールに従い削除されるキャッシュ・エントリーはディスクに保管される
JSP2
Servlet3 Servlet3
23
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
サーブレット・JSPキャッシュの無効化
サーブレット・JSPキャッシュの無効化は以下の5通りで実施可能キャッシュ容量制限
キャッシュ容量がキャッシュ・サイズ(デフォルト2000エントリー)を超える場合、LRUルールに従いキャッシュ・エントリーを無効化
キャッシュ・タイムアウトcachespec.xmlのtimeoutサブエレメントで指定したタイムアウト値により、キャッシュを無効化timeoutサブエレメントを指定しない場合、その他の無効化が実行されるまでキャッシュ・エントリーは無限に保持される
Invalidationエレメントの使用cachespec.xmlでinvalidationエレメントを使用し、任意のリクエストに対してキャッシュ無効化を紐付け設定任意のリクエストが実行されると該当のキャッシュを無効化無効化するキャッシュ対象はdependency-idエレメント使用することによりグルーピング可能
キャッシュ操作APIの実装アプリケーション・コード内でDistributedMap APIを実装し、サーブレット・キャッシュ・インスタンス内のオブジェクトを直接操作し無効化を実施(次ページ参照)DistributedMapはデフォルト・キャッシュ・インスタンス(baseCache)のみに使用可能別途作成したサーブレット・キャッシュ・インスタンスに対しては使用できない
CacheMonitorアプリケーションの使用CacheMonitorアプリケーションから任意のキャッシュもしくはキャッシュ・インスタンスを選択し、キャッシュの無効化を実施
お客様要件に合わせて上記からキャッシュ無効化の方法を選択する
24
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
<参考>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...
25
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
サーブレット・JSPキャッシュの設定手順
1. アプリケーション・サーバーでサーブレット・キャッシュを有効に設定クラスター構成の場合はクラスター・メンバー全てに対し、この設定を実施
2. キャッシュ・インスタンスの設定追加でキャッシュ・インスタンスを作成する場合はここで作成各アプリケーション・サーバーのキャッシュ・インスタンス間でキャッシュの複製をおこなう場合は、複製ドメインの定義も実施
3. cachespec.xmlの記述キャッシュ対象および各キャッシュ対象の設定をcachespec.xmlに記述cachespec.xmlは各アプリケーションのWebモジュールのWEB-INFディレクトリーに配置(cachespec.xmlを<WAS_INSTALL_ROOT>/properties下に配置した場合は、グローバル設定となり、全てのアプリケーション(EAR)に対してその設定が有効になる)cachespec.xmlを含むアプリケーションをデプロイ後、キャッシュ対象リクエスト発生時に該当コンテンツがキャッシュされる
詳細は次ページ以降を参照
26
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
1.サーブレット・キャッシュを有効に設定
管理コンソールの下記画面でサーブレット・JSPキャッシュを有効に設定アプリケーション・サーバー > [アプリケーション・サーバー名] > Webコンテナー
サーブレット・JSPキャッシュはデフォルト無効クラスター構成の場合は、クラスター・メンバー全てに対し同じ設定を実施
サーブレット・JSPキャッシュの使用有無(デフォルトOFF)
27
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
2.キャッシュ・インスタンスの設定(1/4)
キャッシュ複製をおこなう場合は、事前に複製ドメインを作成
管理コンソールの下記画面でサーブレット・JSPキャッシュ用複製ドメインを作成環境 > 複製ドメイン > 新規作成
複製ドメイン名として、任意の名前を指定
レプリカの数は「ドメイン全体」を指定
28
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
2.キャッシュ・インスタンスの設定(2/4)
管理コンソールの下記画面でデフォルト・キャッシュ・インスタンスの設定を実施アプリケーション・サーバー > [アプリケーション・サーバー名] > 動的キャッシュ・サービス
キャッシュ・インスタンスが保持するキャッシュ・エントリーの最大個数を指定(デフォルト2000エントリー)
WAS V7.0ではメモリー・キャッシュ・サイズの制限を有効にすることで、キャッシュのヒープ使用量を制限可能
29
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
2.キャッシュ・インスタンスの設定(3/4)
デフォルト・キャッシュ・インスタンスの設定の続き(ディスク・オフロードの設定)
ディスク・オフロードの使用有無(デフォルトOFF)オフロード位置でキャッシュ・エントリーの保管ディレクトリーを指定デフォルト・ディレクトリーは、<WAS_INSTALL_ROOT>/temp/[ノード名]/[サーバー名]/_dynacache/[キャッシュ・インスタンスのJNDI名]
サーバー停止時におけるメモリー上のキャッシュ・エントリーのディスク保管有無(デフォルトOFF)
30
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
2.キャッシュ・インスタンスの設定(4/4)
デフォルト・キャッシュ・インスタンスの設定の続き(キャッシュ複製の設定)
キャッシュ複製の使用有無(デフォルトOFF)
フル・グループ複製ドメインに作成した複製ドメインを指定
複製タイプに任意の複製方式を指定(p.21参照)cachespec.xml内で複製タイプを指定しなかった場合、ここで設定した複製タイプが指定される
31
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
<参考>キャッシュ・インスタンスの作成
別途キャッシュ・インスタンスを作成する場合は、管理コンソールの下記画面で作成リソース > キャッシュ・インスタンス > サーブレット・キャッシュ・インスタンス > 新規作成
作成するキャッシュ・インスタンスの有効範囲を選択し、新規作成
任意のキャッシュ・インスタンス名を指定
任意のJNDI名を指定ここで指定したJNDI名をcachespec.xmlで設定
以降の設定はデフォルト・キャッシュ・インスタンスの設定と同様
32
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
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をWEB-INF下に配置
cachespec.xmlの記述方法は次ページ以降を参照
33
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
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
cachecachespec.xmlのルート・エレメントcache-instanceエレメントおよびcache-entryエレメントを含む
cache-instanceキャッシュ・エントリーのキャッシュ先インスタンスを指定(指定しない場合は、デフォルト・キャッシュ・インスタンスが使用される)name属性にキャッシュ・インスタンスのJNDI名を指定
cache-entry各キャッシュ対象の情報を指定キャッシュ・エントリー名やキャッシュ生成ルールを指定cache-entry内のエレメントは次ページを参照
34
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
3.cachespec.xmlの記述(3/4)
cache-entry内の代表的なエレメントは以下の通り
classキャッシュ対象のタイプを指定サーブレット、JSPは「servlet」を指定し、静的コンテンツは「static」を指定
nameキャッシュ対象のURIを指定cachespec.xmlをWebモジュール内に配置する場合は、コンテキスト・ルート下からのパスで指定し、propertiesディレクトリー下に配置する場合は(グローバル設定)、コンテキスト・ルートを含むパスで指定WEB-INF下に配置した場合) /input.jspproperties下に配置した場合) /PostTestWeb/input.jsp
sharing-policyキャッシュ複製の複製タイプを指定この設定はキャッシュ・インスタンスのキャッシュ複製設定で指定した複製タイプよりも優先される
propertyキャッシュ詳細機能の挙動を指定ESIキャッシュにもキャッシュさせる場合は以下のように記述例) <property name="EdgeCacheable">true</property>
35
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
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を指定すると、キャッシュ・エントリーに一致するリクエスト発生時にそれらを無効化する
36
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
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>
37
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
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>
38
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
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>
39
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
サーブレット・JSPキャッシュの確認方法(1/2)
サーブレット・JSPキャッシュのキャッシュ状況はCacheMonitorで確認可能CacheMonitor.ear(WAS_INSTALL_ROOT/installableApps下に存在)をデプロイモジュールのマッピングはクラスターもしくはアプリケーション・サーバーのみ、Webサーバーは含まない CacheMonitorのURLは以下のとおり
http://[ホスト名]:[ポート]/cachemonitor
キャッシュ・インスタンス下のプルダウン・メニューで内容を確認したいキャッシュ・インスタンスを選択し「OK」をクリック
「キャッシュ統計」で統計情報を確認可能
負荷テストではキャッシュ・ヒット数の値が大きくなるようにキャッシュ対象、キャッシュ・サイズやタイムアウト値のチューニングをおこなう
「キャッシュの消去」をクリックすると対象キャッシュ・インスタンス上の全てのキャッシュ・エントリーを無効化する
「キャッシュ内容」をクリックすると対象キャッシュ・インスタンス上のキャッシュ・エントリーを確認可能(次ページ参照)
キャッシュ・インスタンスを選択(baseCacheはデフォルト・インスタンス)
40
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
サーブレット・JSPキャッシュの確認方法(2/2)
「キャッシュ内容」をクリックするとサーブレット・JSPキャッシュ上のキャッシュ・エントリーを確認可能
左記例はp.37の設定例2を設定した場合のキャッシュ内容例
パラメーター値ごとにキャッシュ・エントリーを保持している
「キャッシュの消去」をクリックすると対象キャッシュ・インスタンス上の全てのキャッシュ・エントリーを無効化する
各キャッシュ・エントリーのキャッシュIDのリンク先にある「無効化」をクリックすると、そのエントリーのみ無効化される
各キャッシュ・エントリーの以下の項目も確認可能(キャッシュ・インスタンスもしくはcachespec.xmlでの設定値)
タイムアウト ・・・ 無効化タイムアウト値依存ID ・・・ dependency-idで指定した値複製 ・・・ 複製タイプ優先順位 ・・・ キャッシュ・エントリーの優先順位
キャッシュ・インスタンス上のキャッシュ・エントリー一覧を表示
41
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
4. 参考文献
42
ISE Webインフラストラクチャー
© 2009 IBM Japan Systems Engineering Co., Ltd.
参考文献
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 Handbookhttp://www.redbooks.ibm.com/abstracts/SG246392.html?Open
Mastering DynaCache in WebSphere Commercehttp://www.redbooks.ibm.com/abstracts/SG247393.html?Open