Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
© 2017 IBM Corporation
IBM Business Process Manager
連載:事例に学ぶパフォーマンスの向上
第7回 BPMのキャッシュ
2Page © 2017 IBM Corporation
概要
Webシステムのパフォーマンスを向上させる1つの手法にキャッシングがあります。
BPMでは直感的で視覚的な開発・実行基盤を提供しますが、その背後では様々なリソースが使用されています。エンドユーザーが体感するレスポンスを向上させるには、同一の処理を繰り返さないようキャッシュの有効活用が求められます。
キャッシングを検討するときには、何をどこでキャッシュするか、またどのようにキャッシュサイズを調整するかを考える必要があります。
今回は、BPMシステムに関連するキャッシュ機能およびその設定方法について説明します。
3Page © 2017 IBM Corporation
BPMシステムにおけるキャッシュ
IHSキャッシュ
静的コンテンツ
ブラウザーのキャッシュ
静的コンテンツBPM特有のキャッシュ
LDAP接続のキャッシュ
DB接続のキャッシュ
POファクトリー、ブランチ、スナップショットなど
VMM属性、VMM検索結果
PreparedStatementCache
BPMシステム設計を行う上で検討項目に入る代表的なキャッシュを以下に示します。
一般的に、キャッシングは、より前段でキャッシュすることで、よりパフォーマンスの向上が実現でき、後段ではより細かい粒度でキャッシュを行うことができます。BPMでは、ベースとなるWASのキャッシュ機能に加え、BPM特有のキャッシュ機構が多数あり、それぞれ要件にあわせた調整が必要です。
Web Server
IHS/Plugin
Process PortalProcess Designer
Process CenterProcess Server
DB
LDAPシステム
BPM
4Page © 2017 IBM Corporation
ブラウザーのキャッシュ
ブラウザーのキャッシュは、主にサーバーから取得した静的コンテンツをローカルに保存し二度目以降はキャッシュから読むことで、同じリソースの繰り返しロードを防ぎページのロード時間を短縮します。
BPMのUIでは、JavaScriptやAjax通信が多く使われているため、ブラウザーのキャッシュはパフォーマンス向上に効果的で、特にネットワークの遅延が大きな環境で有効です。
BPMでは、ブラウザーにCSSやJavaScriptなどの静的コンテンツを30日キャッシュします。
【設定箇所】
IEの場合:インターネット・オプションより設定可能。以下が推奨設定。
• 「全般」タブ>「閲覧の履歴」>「設定」>「使用するディスク領域」を50MB以上にする
• 「全般」タブ>「終了時に閲覧の履歴を削除する」を無効にする
• 「詳細設定」タブ >「ブラウザーを閉じたとき、[Temporary Internet Files]フォルダーを空にする」を無効にする
Firefoxの場合:オプションより設定可能。以下が推奨設定。
• 「詳細」>「ネットワーク」よりキャッシュサイズを50MB以上にする
• 「プライバシー」>「履歴」>「Firefoxに履歴を記憶させる」を有効にする
Web Server
IHS/Plugin
Process PortalProcess Designer
Process CenterProcess Server DB
LDAPシステム
BPM
5Page © 2017 IBM Corporation
Webサーバーのキャッシュ
BPMの前段にWebサーバーがある場合、Webサーバーのキャッシュを有効にすることで、Process PortalやProcess Designerによって要求される静的コンテンツ(イメージやJavaScriptファイル)をキャッシュします。
特に、BPMサーバーがクライアントから遠い場所にある場合、Webサーバーをクライアントに近いところに配置することでパフォーマンス改善が見込めます。
:LoadModule cache_module modules/mod_cache.soLoadModule disk_cache_module modules/mod_disk_cache.soLoadModule expires_module modules/mod_expires.so:#ディスクによるキャッシュを有効に<IfModule mod_disk_cache.c>
CacheEnable disk /CacheRoot C:¥IBM¥HTTPServer¥cache
</IfModule>:#86400sec=1day保管<ifModule mod_expires.c>
ExpiresActive onExpiresByType image/gif A86400ExpiresByType image/jpeg A86400ExpiresByType image/bmp A86400ExpiresByType image/png A86400ExpiresByType application/x-javascript A86400ExpiresByType text/css A86400
</ifModule>:
IHSのmod_cacheには、ディスクに記憶するmod_disk_cacheとメモリーに記憶するmod_mem_cacheとがありますが、IHSV7.0.0.3以降ではmod_disk_cacheの使用が推奨されます。
ただし、mod_disk_cache使用時には、併せてhtcachecleanコマンドを使用したキャッシュのメンテナンス運用が必要とされますのでご注意ください。
参考:
http://www-01.ibm.com/support/docview.wss?uid=swg21370400
httpd.confの設定例
Web Server
IHS/Plugin
Process PortalProcess Designer
Process CenterProcess Server DB
LDAPシステム
BPM
6Page © 2017 IBM Corporation
IBM BPM には、多数のキャッシュ設定およびキャッシュ関連の設定があります。
Process Admin Consoleの「サーバー管理」領域で「IBM BPMの管理」>「キャッシュの管理」ページを使用して、主要なキャッシュ情報を確認してください。「キャッシュの管理」ページには、キャッシュの名前と簡単な説明のほか、Process Server上の各キャッシュに関する情報が表示されます。
キャッシュ・ヒット率が90%であれば、十分に適切であると考えられますが、50%より低いと、キャッシュ再設定が必要な可能性があります。
Process Admin Consoleによるキャッシュの確認(1/2)
Web Server
IHS/Plugin
Process PortalProcess Designer
Process CenterProcess Server DB
LDAPシステム
BPM
7Page © 2017 IBM Corporation
Process Admin Consoleの「キャッシュの管理」ページに加え、「モニタリング」>「計測」を選択することで、計測モニターにプロセス計測データを表示できます。表示されたデータがキャッシュ設定に対してキャッシュ・ミス数が予想以上に多いことを示している場合は、100Custom.xmlファイルを編集して、問題のあるキャッシュ設定のデフォルト値をオーバーライドすることができます。
Process Admin Consoleによるキャッシュの確認(2/2)
Web Server
IHS/Plugin
Process PortalProcess Designer
Process CenterProcess Server DB
LDAPシステム
BPM
1. スクリプト・キャッシュ
• 「Cache」>「Script Cache Count」
2. Genericキャッシュ
• 「Cache」>「Generic Cache」
3. POファクトリー・キャッシュ
• 「PO Factory」
4. ブランチ・キャッシュ
• 「Repository」>「Branch context cache hits」
• 「Repository」> 「Branch context cache misses」
5. スナップショット・キャッシュ(Process Centerのみ)
• 「Repository」>「Snapshot context max cache size」
以降のページで各項目の意味合いと設定方法をご紹介します。
8Page © 2017 IBM Corporation
スクリプト・キャッシュはJavaScriptエンジンにおけるキャッシュを指しています。JavaScript エンジンの構成設定は JavaScript サーバー・サイド・スクリプトの処理で使用されますが、CoachでのJavaScriptコードのパフォーマンスを調整するためにも使用できます。-1と9 の間の数値を受け入れる構成設定では、値 -1 は最適化オフ(解釈モード)を意味し、0 から 9 までの値は最適化のレベルを指定します (9は、最も高い最適化のレベルであり、実行は速くなりますが、コンパイルには時間がかかります)。 推奨値は -1 です。-1 以外の値では一般的にパフォーマンスが向上するよりは低下することがテストによって実証されています。
デフォルト値を変更すると、パフォーマンスが大きく低下する可能性があります。スクリプト・キャッシュを変更する際は、ご注意ください。
1. スクリプト・キャッシュのチューニング
<common> <javascript-engine>
<shared-scope-optimization-level merge="replace">-1</shared-scope-optimization-level> <script-component-optimization-level merge="replace">-1</script-component-optimization-level> <default-script-cache-optimization-level merge="replace">-1</default-script-cache-optimization-level> <coach-optimization-level merge="replace">-1</coach-optimization-level> <use-embeded-jscript-with-buff merge=“replace”>true</use-embeded-jscript-with-buff><cached-scope-size merge="replace">50</cached-scope-size>
</javascript-engine> </common>
100Custom.xml ファイルで追加または更新する設定
Web Server
IHS/Plugin
Process PortalProcess Designer
Process CenterProcess Server DB
LDAPシステム
BPM
9Page © 2017 IBM Corporation
「Cache」>「Generic Cache」>「Hits」と「Misses」を確認してキャッシュ・ミス率を計算してください。キャッシュ・ミス数が高い場合、またはキャッシュ・ミス率が50%より高い場合、キャッシュ再設定が必要な可能性があります。下図の通り主要なキャッシュ項目のカテゴリーを確認し、それに応じて100Custom.xmlを編集します。その他のキャッシュ項目の追加または編集方法はこちらのKnowledgeCenterでご確認ください。
2. Genericキャッシュのチューニング
Web Server
IHS/Plugin
Process PortalProcess Designer
Process CenterProcess Server DB
LDAPシステム
BPM
カテゴリー キャッシュ項目 設定
管理対象資産キャッシュ設定
ManagedAssetsClassloaderCache classloader-cache-size
ManagedAssetsResourceCache classloader-resource-map-size
ユーザー関連キャッシュ設定
AttributeDefault cache-expiration-time
cache-max-size
query-performance-threshold
その他のキャッシュ設定
TWObjectClass twobject-class-cache-size
BusinessDataAliasCache use-business-aliases-for-process-instances
bdac-refresh-interval
init-bdac-on-startup
10Page © 2017 IBM Corporation
永続オブジェクト (PO) ファクトリーは、永続オブジェクトの作成に使用されるクラスです。POファクトリーは永続オブジェクト・タイプごとに存在し、そのタイプの永続オブジェクトをキャッシュするための設定があります。
IBM BPM の PO ファクトリー設定には、バージョン付きとバージョンなし2つのタイプがあります。バージョン付き永続オブジェクトの場合は、オブジェクトが変更されるごとに新しいオブジェクトが別個に保存され、以前のバージョンは上書きされません。バージョンなしの永続オブジェクトの場合は、最後の変更のみが保持され、以前のバージョンは破棄されます。
「PO Factory」の「カウント/値」を確認して、キャッシュ・ミス率を計算してください。前述のように、キャッシュ・ミス数が高い場合、またはキャッシュ・ミス率が50%より高い場合、キャッシュの再設定が必要な可能性があります。
バージョン付きオブジェクトのキャッシュサイズは、100Custom.xmlにて以下のように設定します。
バージョンなしオブジェクトのキャッシュサイズは、 100Custom.xmlにて以下のように設定します。
3. POファクトリー・キャッシュのチューニング(1/2)
<common> <default-versioned-po-cache-size merge="replace">7000</default-versioned-po-cache-size>
</common>
<common> <default-unversioned-po-cache-size merge="replace">2000</default-unversioned-po-cache-size>
</common>
Web Server
IHS/Plugin
Process PortalProcess Designer
Process CenterProcess Server DB
LDAPシステム
BPM
11Page © 2017 IBM Corporation
計測ページにある「PO Factory」のオブジェクトは右表のようにまとめました。キャッシュ・ミス率が高いオブジェクトを所属しているPOタイプを特定し、必要に応じて前ページで記述した100Custom.xmlのエレメントを編集しキャッシュ・サイズを調整してください。
3. POファクトリー・キャッシュのチューニング(2/2)
Versioned Un-versioned
BPD BlueprintSubscription ProjectDefaults ProjectDependency ResourceBundleGroup TWClass TWProcess BpdEvent CoachView ManagedAsset Metric Participant TrackingGroup UITheme EnviromentVariable UserAttributeDefinition EnvironmentVariableSet
Project Server Snapshot ECMObject GovernanceEvent EnvironmentType TimePeriod BPMSnapshotStatus InstallMessage ProjectSubscribed ProjectSubscription RepositoryLog ServerCapability
Web Server
IHS/Plugin
Process PortalProcess Designer
Process CenterProcess Server DB
LDAPシステム
BPM
12Page © 2017 IBM Corporation
プロセス・アプリケーションが開発されると、バージョン付きオブジェクトに対する変更はIBM BPMリポジトリーで追跡されます。オブジェクトのバージョンを識別するのに、プロジェクト、ブランチ(またはトラック)、スナップショットという3つの識別子が使われます。ここでのプロジェクトは、プロセス・アプリケーションまたはツールキットを指しています。
デフォルトでは、各プロジェクトにmainと呼ばれるブランチがあります。各ブランチでは、オブジェクトがデータベースに保存されるたびに特定のバージョンのオブジェクトが作成され、スナップショットを取得すると、その時点におけるすべてのオブジェクトの断面が取得されます。
各ブランチ・キャッシュには、スナップショット・キャッシュが含まれますが、Process Server環境ではデプロイされたスナップショットはそれぞれユニークなブランチにデプロイされるため、各ブランチ・キャッシュにスナップショット・キャッシュは1つしか含まれません。(同一ブランチ内の別スナップショットは、同じブランチ・キャッシュを共有せずに、スナップショットごとに個別のブランチ・キャッシュを生成します)
プロセスまたはサービスが実行されると、プロセス・アプリケーションおよびそれに依存するツールキットを構成するオブジェクトや、ブランチおよびスナップショットに関するメタデータがメモリー上にロードされ、キャッシュされます。
Process App or
Toolkit
Branch Main(default branch)
DB save 1
DB save 2
Branch A DB save 1
Snapshot A(current branch current object)
サーバーにデプロイ
Process Server
Branch cache
Snapshot cache
…
Branch cache
Snapshot cache
4. ブランチ・キャッシュのチューニング(1/2)Web Server
IHS/Plugin
Process PortalProcess Designer
Process CenterProcess Server DB
LDAPシステム
BPM
13Page © 2017 IBM Corporation
ブランチ・キャッシュは、LRU(Least Recently Used)キャッシュです。つまり、キャッシュが設定されたサイズを超えると、新しいエントリーの領域を確保するために最も古いエントリーが削除されます。したがって、キャッシュサイズが小さすぎるとより多くのキャッシュミスが発生します。キャッシュミスが発生すると、成果物をデータベースから直接ロードする必要があるため、LSW_PO_VERSIONSテーブルにおけるデータベースアクティビティーが大幅に増加する可能性があります。
Process Admin Consoleで「Branch context cache hits」と「Branch context cache misses」を確認して、ミス率が高い場合(例えば50%以上)、キャッシュのサイズを変更する必要がある可能性があります。100Custom.xmlに以下のように値を指定し、デフォルト値をオーバーライドできます。
キャッシュ・ミス率を削減するためにキャッシュサイズを増やすのは一般的な対策ですが、キャッシュサイズが大きすぎると、多くのメモリーを消費し、BPM JVMのパフォーマンスに影響する可能性があります。
新規にプロセス・アプリケーションをデプロイした後に、LSW_PO_VERSIONSテーブルへのSQL応答時間が急に低下するようになったら、キャッシュサイズの増加を検討ください。また、キャッシュサイズを増やす場合は、併せてJVMのヒープサイズ増加も検討ください。
<server merge="mergeChildren"><repository merge="mergeChildren"><branch-context-max-cache-size merge="replace">64</branch-context-max-cache-size>
</repository></server>
4. ブランチ・キャッシュのチューニング(2/2)Web Server
IHS/Plugin
Process PortalProcess Designer
Process CenterProcess Server DB
LDAPシステム
BPM
14Page © 2017 IBM Corporation
スナップショット・キャッシュはブランチ・キャッシュと独立して調整されます。前述のProcess Server環境では各ブランチ・キャッシュに1つのスナップショット・キャッシュしか含まれないことに対して、Process Centerの場合、ブランチ上のすべてのスナップショットは同じブランチ・キャッシュを使用します。したがって、スナップショット・キャッシュのエントリーの数は複数ある可能性があります。必要なエントリーの数は、アクセスされたスナップショットの数によって異なります。スナップショットへのアクセスは、スナップショットをアクティブにした時、またはProcess Designerのユーザーが成果物を表示・実行する時、または特定のスナップショット・バージョンで成果物を表示・実行する時に行われます。したがって、スナップショット・キャッシュ・サイズの調整は、Process Centerサーバーに対してのみ必要です。
Process App
or Toolkit
Branch Main(default branch)
Snapshot a
Snapshot b
Branch A Snapshot c
Process Centerサーバー
Branch cache
Snapshot cache
Snapshot cache
Branch cache
Snapshot cache
5. スナップショット・キャッシュのチューニング(1/2)
(Process Centerのみ)
Web Server
IHS/Plugin
Process PortalProcess Designer
Process CenterProcess Server DB
LDAPシステム
BPM
15Page © 2017 IBM Corporation
スナップショット・キャッシュのエントリーは、アプリケーションの内容に依存するため、非常に大きくなる可能性があります。スナップショット・キャッシュ・エントリーが数百MBに達することも珍しくありません。サイズは、特定のスナップショット内の成果物の複雑さと量に依存しています。
Process Admin Consoleで「Snapshot context max cache size」を確認し、キャッシュサイズを調整する必要がある場合、100Custom.xmlに以下のように値を指定し、スナップショット・キャッシュのサイズを設定します。
<server merge="mergeChildren"><repository merge="mergeChildren"><snapshot-cache-size-per-branch merge="replace">64</snapshot-cache-size-per-branch>
</repository></server>
5. スナップショット・キャッシュのチューニング(2/2)
(Process Centerのみ)
Web Server
IHS/Plugin
Process PortalProcess Designer
Process CenterProcess Server DB
LDAPシステム
BPM
16Page © 2017 IBM Corporation
サービス結果のキャッシュ
サービスのパフォーマンスを向上させるために、入力パラメーター値の組み合わせごとに、サービス結果をキャッシュできます。
このキャッシュを有効にするには、各種サービス(Process DesignerでのHeritageヒューマン・サービス、Ajaxサービス、Integration Service、General System Service、IBM Case Manager Integration Service、Advanced Integration Service、決定サービス、Web Designerでのサービス・フロー)の「概要」ページで「追加プロパティー」セクションにある「サービス結果のキャッシュを有効にする」のチェックを入れ、キャッシュの保持期間を入力します。
なお、100Custom.xml ファイルに以下のように値を指定し、キャッシュ・サイズを調整できます。
※サービス結果のキャッシュは、最上位サービスのみ機能します。ネストされたサービスまたはリンクされたサービスの結果はキャッシュに格納されませんのでご注意ください。
<server merge=“mergeChildren”> <service-result-cache-size>4096</service-result-cache-size>
</server>
Web Server
IHS/Plugin
Process PortalProcess Designer
Process CenterProcess Server DB
LDAPシステム
BPM
17Page © 2017 IBM Corporation
VMMのLDAPキャッシュ
BPMではユーザー・レジストリーとしてLDAPを使用する構成が一般的です。
Virtual Member Manager (VMM) で、LDAPから戻される結果をキャッシュすることで、タスク・アサイン時の認可、Portalへのログイン、Portalでのタスクリスト更新など、でパフォーマンスの向上が見込めます。
【設定箇所】
管理コンソールにログインし、「セキュリティー」>「グローバル・セキュリティー」>「統合リポジトリー」の「構成」>対象LDAPの「<リポジトリーID>」>「パフォーマンス」より設定可能。以下が推奨値。
• 「属性のキャッシュ」 ≧ (グループ数) + 2 * (1日あたりの個別ユーザー数)
• 「検索結果のキャッシュ」 ≧ 3 * (グループ数) + 6 * (1日あたりの個別ユーザー数)
• 各「キャッシュ・タイムアウト」 = 14400 秒(4時間)
※タイムアウト値は、ユーザー/グループ変更の頻度に応じて調整します
※1キャッシュ・エントリーあたり、約1600バイトのヒープが消費されます
参考:
https://www.ibm.com/support/knowledgecenter/ja/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/uwim_ldapperfsettings.html
Web Server
IHS/Plugin
Process PortalProcess Designer
Process CenterProcess Server DB
LDAPシステム
BPM
18Page © 2017 IBM Corporation
データソースのPreparedStatementCache
BPMは内部的に広範囲でPreparedStatementを使っています。
JDBCデータソースの設定で1コネクションごとにキャッシュするPreparedStatementのサイズ調整が可能で、この設定によりパフォーマンス向上が期待されます。
【設定箇所】
管理コンソールにログインし、「JDBC」>「データソース」>「<データソース名>」>「WebSphere Application Server データ・ソース・プロパティー」>「ステートメント・キャッシュ・サイズ」より設定可能。
デフォルトは1コネクションあたり50ステートメントになっていますが、TPV(Tivoli Performance Viewer)などを用いて、破棄されるPreparedStatementの数が多いようであれば増加を検討してください。ただし、大きすぎるキャッシュ・サイズはヒープに悪影響を及ぼす可能性もあるので注意ください。
参考:
https://www.ibm.com/support/knowledgecenter/ja/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/udat_jdbcdatasorprops.html
Web Server
IHS/Plugin
Process PortalProcess Designer
Process CenterProcess Server DB
LDAPシステム
BPM
19Page © 2017 IBM Corporation
まとめ
BPMシステムにおける各種キャッシュを有効活用することで、パフォーマンスを改善することができます。
パフォーマンスが遅い場合、どの処理が影響しているのかを特定し、各キャッシュサイズを調整することが重要です。各所で必要とされるキャッシュサイズは、アプリケーションのサイズや複雑度、またはその利用パターンによって異なります。
BPMサーバー上のキャッシュを増やすとその分JVMヒープに影響を及ぼすこともありますので、キャッシュの調整時にはヒープサイズの調整もあわせて検討ください。
20Page © 2017 IBM Corporation
参考情報
1、キャッシュおよびキャッシュ関連の設定
https://www.ibm.com/support/knowledgecenter/ja/SSFPJS_8.5.7/com.ibm.wbpm.admin.doc/topics/perf_tuning_other.html
2、POファクトリーおよびリポジトリーキャッシュの設定
https://www.ibm.com/support/knowledgecenter/ja/SSFTBX_8.5.7/com.ibm.wbpm.admin.doc/topics/perf_tuning_instrument_data.html
3、Tuning branch and snapshot cache sizes in IBM Business Process Manager
https://www.ibm.com/developerworks/bpm/library/techarticles/1404_booz/1404_booz.html
4、サービスのキャッシュ設定
https://www.ibm.com/support/knowledgecenter/ja/SSFPJS_8.5.7/com.ibm.wbpm.wle.editor.doc/topics/tcrtsrvflow.html
5、IBM Business Process Manager V8.5 Performance Tuning and Best Practices
http://www.redbooks.ibm.com/redbooks/pdfs/sg248216.pdf