配備したBPEL定義に応じて、ビジネス・プロセス実行環境のチューニングを行います。BPEL定義、Webサービスが要求/応答型の場合、タイムアウトを設定できます。以下にチューニングの方法を示します。
BPEL定義の実行時間のタイムアウトの設定には、以下の2通りの方法があります。
BPEL定義ごとに、タイムアウトを設定
BPEL定義全体で共通のタイムアウトを設定
BPEL定義の実行時間のタイムアウトは以下のように判定します。
図E.2 BPEL定義のタイムアウト判定の流れ
ポイント
BPEL定義の実行時間のタイムアウトが発生した場合は、BPEL起動アプリケーションにSOAP Faultを通知します。BPEL定義は最後まで実行し、システムログにWSBPEL-40208のメッセージを出力します。
BPEL定義ごとのタイムアウトの設定は、定義ファイルを使用して行います。
定義ファイルのファイル名を“bpeltimeout.properties”として、以下の位置に格納してください。
[Java EE共通ディレクトリ]\domains\interstage\applications\j2ee-modules\ode\WEB-INF\conf
[Java EE共通ディレクトリ]/domains/interstage/applications/j2ee-modules/ode/WEB-INF/conf
定義ファイルは、プロパティファイル形式(“キー”:“値”の形式)となっており、キーがBPEL定義のプロセス名で、値が秒単位の時間です。指定可能な値は、1から32767であり、それ以外の値が指定された場合には、指定されていないものとして扱われます。
以下に定義ファイルの例を示します。
BPEL001: 10 BPEL002: 10 BPEL003: 10 BPEL004: 20
タイムアウト時間は、BPEL定義の設計時に決めた値とする方法と、実際に動作させて測定した値からタイムアウトを決定する方法があります。
後者は以下の方法で求めることができます。
ビジネス・プロセス実行機能に、測定対象のBPEL定義を配備します。
性能ログを採取するように設定します。性能ログについては、 “BPEL機能のアプリケーション開発”の“BPEL定義の開発”の“E.3.5 ビジネス・プロセス実行環境のログ設定”を参照してください。
BPEL定義を複数回実行します。
性能ログから以下の値を求めます。
Webサービス呼び出しの最大時間
BPEL定義実行時間から、Webサービス呼び出し時間を除いた時間の最大時間
上記の最大時間の和をタイムアウト時間とします。
定義ファイルはビジネス・プロセス実行環境の起動時と、BPEL定義の配備時に読み込まれますので、定義ファイルを作成、更新した場合には、適宜ビジネス・プロセス実行環境の再起動を行ってください。
強化セキュリティモードの場合は、他のInterstage運用グループのユーザーが操作できるよう所属するグループをInterstage運用グループに変更します。
chgrp isgroup [Java EE共通ディレクトリ]/domains/interstage/applications/j2ee-modules/ode/WEB-INF/conf/bpeltimeout.properties
上記は以下の場合の例です。
Interstage運用グループがisgroupの場合。
ビジネス・プロセス実行機能のアプリケーション名がodeの場合
BPEL定義全体で共通のタイムアウトの設定は、定義ファイルを使用して行います。
定義ファイルのファイル名を“bpeltimeoutall.properties”として、以下の位置に格納してください。
[Java EE共通ディレクトリ]\domains\interstage\applications\j2ee-modules\ode\WEB-INF\conf
[Java EE共通ディレクトリ]/domains/interstage/applications/j2ee-modules/ode/WEB-INF/conf
定義ファイルは、プロパティファイル形式( “キー”:“値”の形式)となっており、キーが”TIMEOUT”で、値が秒単位の時間です。指定可能な値は、1から32767であり、それ以外の値が指定された場合には、指定されていないものとして扱われます。
以下に定義ファイルの例を示します。
TIMEOUT: 20
本タイムアウトは、BPEL定義の設計時に決めた値が、複数のBPEL定義で同じ場合に使用してください。
定義ファイルはビジネス・プロセス実行環境の起動時に読み込まれますので、定義ファイルを作成、更新した場合には、適宜ビジネス・プロセス実行環境の再起動を行ってください。
強化セキュリティモードの場合は、他のInterstage運用グループのユーザーが操作できるよう所属するグループをInterstage運用グループに変更します。
chgrp isgroup [Java EE共通ディレクトリ]/domains/interstage/applications/j2ee-modules/ode/WEB-INF/conf/bpeltimeoutall.properties
上記は以下の場合の例です。
Interstage運用グループがisgroupの場合。
ビジネス・プロセス実行機能のアプリケーション名がodeの場合
BPEL定義のInvoke要素が呼び出すWebサービスの実行時間のタイムアウトをWebサービスごとに設定します。タイムアウトの設定は、定義ファイルを使用して行います。
定義ファイルのファイル名を“webtimeout.properties”として、以下の位置に格納してください。
[Java EE共通ディレクトリ]\domains\interstage\applications\j2ee-modules\ode\WEB-INF\conf
[Java EE共通ディレクトリ]/domains/interstage/applications/j2ee-modules/ode/WEB-INF/conf
定義ファイルは、プロパティファイル形式(“キー”:“値”の形式)となっており、キーがWebサービスのURL、値が秒単位の時間です。指定可能な値は、1から32767であり、それ以外の値が指定された場合には、指定されていないものとして扱われます。タイムアウトを設定していない場合のタイムアウトは、600秒です。
以下に定義ファイルの例を示します。
http\://webservice.fujitsu.com/service/G01_U001: 5 http\://webservice.fujitsu.com/service/G01_U002: 5 http\://webservice.fujitsu.com/service/G01_U010: 10
定義ファイルはビジネス・プロセス実行環境の起動時に読み込まれますので、定義ファイルを作成、更新した場合には、適宜ビジネス・プロセス実行環境の再起動を行ってください。
強化セキュリティモードの場合は、他のInterstage運用グループのユーザーが操作できるよう所属するグループをInterstage運用グループに変更します。
chgrp isgroup [Java EE共通ディレクトリ]/domains/interstage/applications/j2ee-modules/ode/WEB-INF/conf/webtimeout.properties
上記は以下の場合の例です。
Interstage運用グループがisgroupの場合。
ビジネス・プロセス実行機能のアプリケーション名がodeの場合
ビジネス・プロセス実行環境の運用時に必要なメモリ容量は以下のとおりです。
メモリ所要量 =IJServerクラスタのサーバインスタンスの動作に必要なメモリ +ビジネス・プロセス実行環境が必要とするメモリ +BPEL定義実行に必要とするメモリ
このメモリ所要量が、デフォルトのヒープサイズ(512MB)より多い場合は、IJServerクラスタの設定のJVMオプションで、ヒープサイズを指定してください。詳細は、Interstage Application Serverの“Java EE運用ガイド”の“Java EE機能のチューニング”の“IJServerクラスタのチューニング”の“Java EE機能のチューニング”を参照してください。
226MB必要となります。
21MB必要となります。
以下の要因により必要なメモリの量は変化します。
BPEL定義中の要素や変数などの定義の数
BPEL定義実行時の入力パラメタ、出力パラメタのサイズ
BPEL定義から呼び出すWebサービスに受け渡すメッセージ、受け渡されるメッセージのサイズ
例として以下のBPEL定義を10多重で実行した場合、メモリは377Mバイト必要になります。このときの入力パラメタのサイズは348バイト、出力パラメタのサイズは388バイト、BPEL定義から呼び出すWebサービスに受け渡すメッセージのサイズは295バイト、受け渡されるメッセージのサイズは388バイトです。
<!-- PerformanceBPEL BPEL Process [Generated by the Eclipse BPEL Designer] --> <bpel:process name="PerformanceBPEL" targetNamespace="http://sample.bpel.org/bpel/sample" suppressJoinFailure="yes" xmlns:tns="http://sample.bpel.org/bpel/sample" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:ns1="http://ws1.performance.bpel.interstage.fujitsu.com" xmlns:ns2="http://ws2.performance.bpel.interstage.fujitsu.com"> <!-- Import the client WSDL --> <bpel:import namespace="http://ws2.performance.bpel.interstage.fujitsu.com" location="PerformanceWebService2.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"></bpel:import> <bpel:import namespace="http://ws1.performance.bpel.interstage.fujitsu.com" location="PerformanceWebService1.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"></bpel:import> <bpel:import location="PerformanceBPELArtifacts.wsdl" namespace="http://sample.bpel.org/bpel/sample" importType="http://schemas.xmlsoap.org/wsdl/" /> <!-- ================================================================= --> <!-- PARTNERLINKS --> <!-- List of services participating in this BPEL process --> <!-- ================================================================= --> <bpel:partnerLinks> <!-- The 'client' role represents the requester of this service. --> <bpel:partnerLink name="client" partnerLinkType="tns:PerformanceBPEL" myRole="PerformanceBPELProvider" /> <bpel:partnerLink name="WS1PLink" partnerLinkType="tns:WS1PLinkType" partnerRole="WS1Role"></bpel:partnerLink> <bpel:partnerLink name="WS2PLink" partnerLinkType="tns:WS2PLinkType" partnerRole="WS2Role"></bpel:partnerLink> </bpel:partnerLinks> <!-- ================================================================= --> <!-- VARIABLES --> <!-- List of messages and XML documents used within this BPEL process --> <!-- ================================================================= --> <bpel:variables> <!-- Reference to the message passed as input during initiation --> <bpel:variable name="input" messageType="tns:PerformanceBPELRequestMessage"/> <!-- Reference to the message that will be returned to the requester --> <bpel:variable name="output" messageType="tns:PerformanceBPELResponseMessage"/> <bpel:variable name="WS1Request" messageType="ns1:apprun1Request"></bpel:variable> <bpel:variable name="WS1Response" messageType="ns1:apprun1Response"></bpel:variable> <bpel:variable name="WS2Request" messageType="ns2:apprun2Request"></bpel:variable> <bpel:variable name="WS2Response" messageType="ns2:apprun2Response"></bpel:variable> </bpel:variables> <!-- ================================================================= --> <!-- ORCHESTRATION LOGIC --> <!-- Set of activities coordinating the flow of messages across the --> <!-- services integrated within this business process --> <!-- ================================================================= --> <bpel:sequence name="main"> <!-- Receive input from requester. Note: This maps to operation defined in PerformanceBPEL.wsdl --> <bpel:receive name="receiveInput" partnerLink="client" portType="tns:PerformanceBPEL" operation="process" variable="input" createInstance="yes"/> <!-- Generate reply to synchronous request --> <bpel:assign validate="no" name="Assign"> <bpel:copy> <bpel:from> <bpel:literal xml:space="preserve"><impl:apprun1 xmlns:impl="http://ws1.performance.bpel.interstage.fujitsu.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <impl:in0></impl:in0> </impl:apprun1> </bpel:literal> </bpel:from> <bpel:to variable="WS1Request" part="parameters"></bpel:to> </bpel:copy> <bpel:copy> <bpel:from part="payload" variable="input"> <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:id_in]]></bpel:query> </bpel:from> <bpel:to part="parameters" variable="WS1Request"> <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[ns1:in0]]></bpel:query> </bpel:to> </bpel:copy> </bpel:assign> <bpel:invoke name="Invoke" partnerLink="WS1PLink" operation="apprun1" portType="ns1:PerformanceWebService1" inputVariable="WS1Request" outputVariable="WS1Response"></bpel:invoke> <bpel:assign validate="no" name="Assign1"> <bpel:copy> <bpel:from> <bpel:literal xml:space="preserve"><impl:apprun2 xmlns:impl="http://ws2.performance.bpel.interstage.fujitsu.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <impl:in0></impl:in0> </impl:apprun2> </bpel:literal> </bpel:from> <bpel:to variable="WS2Request" part="parameters"></bpel:to> </bpel:copy> <bpel:copy> <bpel:from part="payload" variable="input"> <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:id_in]]></bpel:query> </bpel:from> <bpel:to part="parameters" variable="WS2Request"> <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[ns2:in0]]></bpel:query> </bpel:to> </bpel:copy> </bpel:assign> <bpel:invoke name="Invoke1" partnerLink="WS2PLink" operation="apprun2" portType="ns2:PerformanceWebService2" inputVariable="WS2Request" outputVariable="WS2Response"></bpel:invoke> <bpel:assign validate="no" name="Assign2"> <bpel:copy> <bpel:from> <bpel:literal xml:space="preserve"><tns:PerformanceBPELResponse xmlns:tns="http://sample.bpel.org/bpel/sample" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <tns:result></tns:result> <tns:id_out></tns:id_out> </tns:PerformanceBPELResponse> </bpel:literal> </bpel:from> <bpel:to variable="output" part="payload"></bpel:to> </bpel:copy> <bpel:copy> <bpel:from> <![CDATA[concat($WS1Response.parameters/ns1:apprun1Return,$WS2Response.parameters/ns2:apprun2Return)]]> </bpel:from> <bpel:to part="payload" variable="output"> <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:result]]></bpel:query> </bpel:to> </bpel:copy> <bpel:copy> <bpel:from part="payload" variable="input"> <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:id_in]]></bpel:query> </bpel:from> <bpel:to part="payload" variable="output"> <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:id_out]]></bpel:query> </bpel:to> </bpel:copy> </bpel:assign> <bpel:reply name="replyOutput" partnerLink="client" portType="tns:PerformanceBPEL" operation="process" variable="output" /> </bpel:sequence> </bpel:process>