15 Oracle BPEL Process Managerのチューニング

Oracle Business Process Execution Language (BPEL) Process Managerのプロパティをチューニングし、コンポジット、ファブリック、アプリケーションおよびサーバーの各レベルで、そのパフォーマンスを最適化できます。

BPEL Process Managerについて

Oracle BPEL Process Managerは、BPELビジネス・プロセスの作成、デプロイおよび管理を目的とした、包括的で使いやすいインフラストラクチャを提供します。

BPELとは、一連の独立したサービスを集めてエンドツーエンドのプロセス・フローを組み立てるための標準です。BPELを使用すれば、プロセス統合の取組みのコストおよび複雑さを大幅に軽減できます。

Oracle BPEL Process Managerの概要は、『Oracle SOA Suiteの理解』主なコンポーネントに関する項にあるOracle Business Process Execution Language (BPEL) Process Managerを参照してください。

BPELパラメータのチューニング

BPELパラメータをチューニングし、パフォーマンスを最適化できます。

ここでは、パフォーマンスの向上に役立つまたは大いに役立つ可能性があるBPELパラメータのチューニングに関する推奨事項について説明します。SOAコンポーネントで使用できる他のチューニング・パラメータの詳細は、このガイドでコンポーネントごとの項を参照してください。

BPELプロセスのサービス・コンポーネントとサービス・エンジンのモニタリング、構成および管理の詳細は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』BPELプロセスのサービス・コンポーネントとエンジンの管理に関する項を参照してください。また、BPEL選択アクティビティの使用方法は、Oracle SOA SuiteでのSOAアプリケーションの開発BPELプロセス・サービス・コンポーネントの使用に関する項を参照してください。

BPELエンジンのチューニング

Enterprise Manager Fusion Middleware Controlを使用して、BPELエンジン・レベルでプロパティをチューニングし、パフォーマンスを構成できます。Oracle Enterprise Manager Fusion Middleware Controlを使用したパラメータの構成およびモニタリングの詳細は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』Oracle SOA SuiteおよびOracle BPM Suiteの管理のスタート・ガイドおよびコンポーネント・プロパティ・ページからのシステムMBeanブラウザへのアクセスに関する項を参照してください。

BPELエンジンのパラメータのチューニング

表15-1に、BPELエンジンのパフォーマンスを改善するために調整できる重要なチューニング・パラメータを示します。

表15-1 重要なBPELエンジン・チューニング

パラメータ 問題点 チューニングに関する推奨事項 トレードオフ

auditLevel

デフォルト: Inherit

audit_trail表へのデータベース挿入が頻繁であるためにパフォーマンスが低くなっています。

Off値を使用して、監査情報の格納を停止します。

auditLevelはSOAインフラストラクチャ・レベルで設定されていることに注意してください。このパラメータの検索およびチューニングの方法は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』BPELプロセス・サービス・エンジン・プロパティの構成に関する項を参照してください。

このプロパティは、永続プロセスと一時プロセスの両方に対して監査証跡ロギング・レベルを設定します。

これをオフにすると、ビジネス・フローおよびペイロード・トラッキングの両方が無効になります。Oracle Enterprise ManagerコンソールでBPELプロセスの状態を表示できなくなります。

表15-2に、チューニングするとパフォーマンスが少し改善されるその他のBPELエンジン・パラメータを示します。ほとんどのユースケースで、デフォルト値は推奨値であることに注意してください。

表15-2 その他のBPELエンジン・チューニング・ノブ

パラメータ 説明

SyncMaxWaitTime

デフォルト: 45秒。

このパラメータの値を小さくしてパフォーマンスを改善できます。

SyncMaxWaitTimeプロパティには、プロセス結果レシーバが戻るまでに結果を待つ最大時間を設定します。このプロパティは同期の相互作用に必要であり、一時プロセスに適用できます。

Oracle Enterprise Manager Fusion Middleware ControlのシステムMBeanブラウザでこのプロパティを検索する方法の詳細は、Oracle SOA SuiteでのSOAアプリケーションの開発トランザクション・タイムアウト値の指定方法に関する項を参照してください。

largedocumentthreshold

デフォルト: 10000 (100KB)。

このパラメータの値を小さくしてパフォーマンスを改善できます。

このプロパティは、BPEL変数の最大サイズ(KB)を設定し、これを超えると、BPEL変数が他のインスタンス・スコープ・データとは異なる表に格納されるようになります。これは、永続プロセスと一時プロセスの両方に適用されます。

インスタンス処理中に、大きなXMLドキュメントが絶えず使用される場合は、そのパフォーマンスが低下することがあります。

Enterprise Manager Fusion Middleware Controlでこのパラメータを検索およびチューニングする方法は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』BPELプロセス・サービス・エンジン・プロパティの構成に関する項を参照してください。

validateXML

デフォルト: False

パフォーマンスを改善するには、このパラメータをデフォルト値のFalseに設定する必要があります。

このプロパティによって、Oracle BPEL Process Managerは受信および送信XMLドキュメントを検証することによって、非スキーマ準拠のペイロード・データをインターセプトできるようになります。ただし、XMLペイロード検証はパフォーマンスを低下させる場合があります。

このパラメータはシステムMBeanブラウザで検索できます。Enterprise Manager Fusion Middleware Controlの「BPELサービス・エンジン・プロパティ」ページから「詳細BPEL構成プロパティ」ボタンを使用して拡張BPELプロパティを検索する方法は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』BPELプロセス・サービス・エンジン・プロパティの構成に関する項を参照してください。

InstanceKeyBlockSize

デフォルト: 10000キー。

インスタンス・キー・ブロックのサイズをci_id_range表への更新の数よりも大きい値に増やして、パフォーマンスを改善できます。

InstanceKeyBlockSizeプロパティは、インスタンスIDの範囲サイズを制御します。Oracle BPEL Serverは、指定された値を使用して、インスタンス・キー(プロセス・インスタンスIDの範囲)をバッチ形式で作成します。このメモリー内IDの範囲が作成されると、次の範囲が更新されて、ci_id_range表に保存されます。

Enterprise Manager Fusion Middleware ControlでシステムMBeanブラウザを使用してこのパラメータを検索およびチューニングする方法は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』BPELプロセス・サービス・エンジン・プロパティの構成に関する項を参照してください。

監査レベルしきい値

デフォルト: 10000

このパラメータの値を小さくしてパフォーマンスを改善できます。

このプロパティには、監査証跡詳細文字列の最大サイズ(KB)を設定し、これを超えると、監査証跡詳細文字列が監査証跡とは別に格納されるようになります。しきい値設定より大きな文字列は、audit_trail表ではなくaudit_details表に格納されます。変数が非常に大きい場合は、変数を監査証跡に記録すると、パフォーマンスに重大な影響を与える可能性があります。

Enterprise Manager Fusion Middleware Controlでこのパラメータを検索およびチューニングする方法は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』BPELプロセス・サービス・エンジン・プロパティの構成に関する項を参照してください。

コンポジットでのBPELのチューニング

個々のコンポジットに対してBPELプロパティをチューニングし、パフォーマンスを向上できます。コンポジット内に設定されるBPELプロパティは、BPELプロセスを含むコンポーネントの動作にのみ影響を与えます。各BPELプロセスは、コンポジットのコンポーネントとして作成できます。

BPELコンポジット・プロパティは、JDeveloperを使用してcomposite.xmlファイルで変更するか、Oracle Enterprise Manager Fusion Middleware ControlのシステムMBeanブラウザで変更できます。各プロパティの機能の詳細は、Oracle SOA SuiteでのSOAアプリケーションの開発デプロイメント・ディスクリプタのプロパティを参照してください。

表15-3に示されているBPELのチューニングに関する考慮事項は、すべてのBPELデプロイメントには適用できない場合があります。必ず各自のユースケース・シナリオを検討して、これらの構成をデプロイメントで使用できるかどうかを判断してください。次に示すパラメータの検索および編集方法の詳細は、『Oracle SOA SuiteでのSOAアプリケーションの開発』プロパティ・インスペクタでデプロイメント・ディスクリプタのプロパティを定義する方法に関する項を参照してください。

表15-3 コンポジット・チューニングでの重要なBPEL

パラメータ 問題点 チューニングに関する推奨事項 トレードオフ

OneWayDeliveryPolicy

デフォルト: async.persist

配信メッセージを永続化するためにリソースが使用されているため、パフォーマンスが低下しています。

値をasync.cacheに設定します。永続プロセス用に受信した配信メッセージは、インメモリー・キャッシュにのみ保存されます。

デフォルトでは、受信リクエストは配信サービス・データベース表dlv_messageに保存されます。

この設定には、メッセージの紛失やシステムの過負荷という高いリスクがあります。これはアダプタのスレッド・モデルも変更します。

Audit Policy

デフォルト: すべてのアクティビティ

すべてのアクティビティが監査されているため、パフォーマンスが低下しています。

主なアクティビティのみを監査します。

レベルが低いアクティビティの監査証跡がなくなります。

inMemoryOptimization

デフォルト: False

completionPersistPolicyパラメータがBPELコンポーネント・レベルでアクティブ化されて、BPELサーバーがすべてまたは一部のインスタンスをデハイドレーションしているため、パフォーマンスが低下しています。

値をFalseに設定して、処理対象のプロセスが一時プロセスであり、デハイドレーションが必要ないことをOracle BPEL Serverに示します。

デハイドレーションを行わないということは、システムがクラッシュした場合にインスタンス内のアクティビティが失われることを意味します。

表15-4に、チューニングするとパフォーマンスが少し改善されるその他のBPELエンジン・パラメータを示しますが、ほとんどの場合にそのデフォルト値は推奨値です。各プロパティの機能の詳細は、Oracle SOA SuiteでのSOAアプリケーションの開発partnerLinkBindingデプロイメント・ディスクリプタのプロパティに関する項を参照してください。

表15-4 コンポジット・チューニング・ノブのその他のBPEL

パラメータ 説明

idempotent

デフォルト: True

idempotentアクティビティは、再試行できるアクティビティです。このパラメータの値をTrueにすると、アクティビティが失敗した直後にBPELサーバーがデハイドレーションを行うことを防止することによって、idempotentアクティビティが許可されます。

このパラメータは、BPELでの実行時にパートナ・リンクに構成されます。

validateXML

デフォルト: False

Falseは、システムがreceiveアクティビティ中にすべてのXMLメッセージを検証しないことを意味します。

このパラメータは、BPELでの実行時にパートナ・リンクに構成されます。

その他のチューニング戦略の使用

インスタンス・データ増大の影響を受けているOracle BPEL Process Manager表を探し、パージしてパフォーマンスを最適化できます。

インスタンス・データ増大の影響を受ける表の識別

インスタンス・データは、Oracle BPEL Process Managerのスキーマ表の領域を占有します。監査やデハイドレーションによってデータが増大すると、データベースのパフォーマンスおよびスループットに大きな影響を与える可能性があります。

表15-5を使用して、インスタンス・データ増大によって影響を受ける可能性がある表を探すことができます。次のデータベース表のパフォーマンスをモニタリングする方法は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』領域使用量、ハードウェア・リソース、およびデータベース・パフォーマンスの監視に関する項を参照してください。

表15-5 インスタンス・データ増大の影響を受けるOracle BPEL Process Managerの表

表名 表の説明

audit_trail

インスタンスの監査証跡を格納します。Oracle BPEL Controlに表示される監査証跡は、XMLドキュメントから作成されます。インスタンスが処理されると、各アクティビティがイベントをXMLとして監査証跡に書き込みます。

audit_details

APIを通じてログに記録される監査詳細を格納します。assignアクティビティなどは、デフォルトで、変数を監査詳細としてログに記録します。

監査詳細はサイズが大きいため、audit_trail表から分離されています。詳細のサイズがこのプロパティに指定した値より大きい場合、詳細はこの表に格納されます。それ以外の場合は、audit_trail表に格納されます。

cube_instance

プロセス・インスタンス・メタデータ(インスタンスの作成日、現在の状態、タイトル、プロセス識別子など)を格納します。

cube_scope

インスタンスのスコープ・データ(BPELフローで宣言されているすべての変数や、フロー全体のルーティング・ロジックを支援する内部オブジェクトなど)を格納します。

dlv_message

受信(呼出し)メッセージおよびコールバック・メッセージを受信時に格納します。この表には、メッセージのメタデータ(現在の状態、プロセス識別子、受信日など)のみが格納されます。

dlv_subscription

インスタンスの配信サブスクリプションを格納します。receiveアクティビティやonMessageアクティビティのように、インスタンスがパートナからのメッセージを待っているときは必ず、そのreceiveアクティビティに対するサブスクリプションが書き込まれます。

document_ci_ref

xml_document表に格納されているデータへのキューブ・インスタンスの参照を格納します。

document_dlv_msg_ref

xml_document表に格納されているdlv_messageドキュメントへの参照を格納します。

wftask

インスタンスに対して作成されたタスクを格納します。TaskManagerプロセスは、この表に現在の状態を保存します。

work_item

インスタンスによって作成されたアクティビティを格納します。BPELフローのすべてのアクティビティにwork_item表が存在します。この表には、アクティビティのメタデータ(現在の状態、ラベル、(waitアクティビティで使用される)有効期限)が格納されます。

xml_document

システム内のすべてのラージ・オブジェクト(dlv_messageドキュメントなど)を格納します。この表には、データがバイナリ・ラージ・オブジェクト(BLOB)として格納されます。ドキュメントとメタデータの記憶域を分けることで、ドキュメントのサイズに関係なく、メタデータを頻繁に変更できるようになります。

Headers_properties

ヘッダーおよびプロパティの情報を格納します。

パフォーマンス低下を引き起こしている表を特定したら、それらをパージできます。データベース増大の詳細は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』増大管理の課題の理解および戦略のテストに関する項を参照してください。