Interstage Application Server チューニングガイド |
目次 索引 |
第3章 J2EEのチューニング | > 3.3 EJBコンテナのチューニング |
Message-driven Beanのインスタンス数を設定することにより、同時にメッセージ処理を行うことができます。
目安としては、キューにメッセージが蓄積されない程度のインスタンス数を設定します。ただし、クライアント数とMessage-driven Bean処理時間に依存するため、環境に合わせ試験運用を行い、調整後に設定してください。
Point-To-Point、または、Publish/SubscriberメッセージングモデルのMessage-driven Beanのメッセージ受信時にプールしたスレッドを利用してメッセージ受信処理を行います。
このプールされたスレッド数のことをMessage-driven Beanの同時処理数と呼びます。
以下の条件に該当するMessage-driven Beanの場合、スレッド多重でのメッセージ受信をサポートしていないため、スレッドプールは使用されません。
|
条件A |
条件B |
メッセージングモデル |
Publish/Subscriber |
Publish/Subscriber |
トランザクション管理種別 |
Container |
Bean |
トランザクション属性 |
Required |
− |
IJServerプロセスに1つ作成し、プールしているスレッドはIJServerに配備されているすべてのMessage-driven Beanのメッセージ受信処理で共有されます。
IJServerプロセス起動時にMessage-driven Beanの最小同時処理数のスレッドを作成してプールに格納します。
メッセージが配信されると、メッセージの処理開始前にプールを検索し、プールにスレッドが存在しない場合、および現在利用されているスレッド数がMessage-driven Beanの最大同時処理数より小さい場合に、スレッドを作成して受信処理を行います。
受信完了後、作成したスレッドは削除されることなくプールに返却されます。
プールにスレッドが存在しない場合で、現在利用されているスレッド数がMessage-driven Beanの最大同時処理数を超過している場合は、現在利用されるスレッドがプールに返却されるまで待機し、プールに返却されたスレッドを取得して受信処理を行います。
プーリングされたスレッドは、アイドルタイムアウトによって破棄されます。スレッドがプールに返却されてから指定した時間を超過しても使用されないスレッドが存在する場合には、そのスレッドを破棄します。
ただし、初期起動スレッド数分はプーリングされ続けますので破棄対象外となります。また、IJServerプロセスが停止するとスレッドも削除されます。
Interstage管理コンソールまたはisj2eeadminコマンドで、スレッドプールに対して以下のチューニングを行うことができます。
EJBを運用するプロセス上で、Message-driven Beanで同時に処理できる処理数(スレッド数)の最大値と最小値を指定します。
また、使用されずにプーリングされたスレッドを解放するまでの、タイムアウト時間を指定します。
設定は、Interstage管理コンソールの[ワークユニット] > "ワークユニット名" > [環境設定] > [詳細設定] > [EJBコンテナ設定]で行います。
または、isj2eeadminコマンドで設定することも可能です。詳細は、"リファレンスマニュアル(コマンド編)"を参照してください。
項目 |
説明 |
値の説明 |
最小 |
IJServerプロセスの起動時に生成するスレッド数を指定します。 |
0〜2147483647の整数値を指定できます。 |
最大 |
起動時に最小値だけスレッドが生成され、必要に応じて最大値までスレッドが拡張されます。 |
1〜2147483647の整数値を指定できます。 |
アイドルタイムアウト |
アイドルタイムアウト値を指定します。 |
0〜2147483647の整数値を指定できます。 |
Message-driven Beanの同時処理数をチューニングする場合、以下を参考にしてください。
Point-To-Pointメッセージングモデルでかつ不揮発化チャネルを利用する場合、リトライ回数を超過してもメッセージ受信を繰り返す可能性があります。
イベントチャネルのイベントデータをメモリにキャッシュする数を、イベントチャネルに蓄積できるイベントデータの最大値よりも大きく設定してください。
設定はイベントサービス運用コマンドを使用して行います。詳細は“リファレンスマニュアル(コマンド編)”の“essetcnf"および"essetcnfchnl"を参照してください。
目次 索引 |