WAS V7.0サーブレット・JSPキャッシュ構成ガイド ISE Webインフラストラクチャー © 2009 IBM Japan Systems Engineering Co., Ltd.
by user
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.