ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server チューニングガイド

5.4.4 Message-driven Bean

  Message-driven Beanのインスタンス数を設定することにより、同時にメッセージ処理を行うことができます。
  目安としては、キューにメッセージが蓄積されない程度のインスタンス数を設定します。ただし、クライアント数と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コマンドで、スレッドプールに対して以下のチューニングを行うことができます。


Message-driven Beanの同時処理数

  EJBを運用するプロセス上で、Message-driven Beanで同時に処理できる処理数(スレッド数)の最大値と最小値を指定します。
  また、使用されずにプーリングされたスレッドを解放するまでの、タイムアウト時間を指定します。

  設定は、Interstage管理コンソールの[ワークユニット] > “ワークユニット名” > [環境設定] > [詳細設定] > [EJBコンテナ設定]で行います。
  または、isj2eeadminコマンドで設定することも可能です。詳細は、“リファレンスマニュアル(コマンド編)”を参照してください。

項目

説明

値の説明

最小

IJServerプロセスの起動時に生成するスレッド数を指定します。
生成されたスレッドは、プーリングされてアイドルタイムアウトの対象外となります。

0~2147483647の整数値を指定できます。
デフォルト値は0です。

最大

起動時に最小値だけスレッドが生成され、必要に応じて最大値までスレッドが拡張されます。

1~2147483647の整数値を指定できます。
デフォルト値は64です。

アイドルタイムアウト

アイドルタイムアウト値を指定します。
スレッドが、プールに返却されてから指定した時間を超過しても、使用されないスレッドを破棄します。ただし、最小同時処理数分は破棄対象外となります。
0を指定した場合には、タイムアウトしません。

0~2147483647の整数値を指定できます。
デフォルト値は600(秒)です。

  Message-driven Beanの同時処理数をチューニングする場合、以下を参考にしてください。

■異常時のメッセージ退避機能

  Point-To-Pointメッセージングモデルでかつ不揮発化チャネルを利用する場合、リトライ回数を超過してもメッセージ受信を繰り返す可能性があります。
  イベントチャネルのイベントデータをメモリにキャッシュする数を、イベントチャネルに蓄積できるイベントデータの最大値よりも大きく設定してください。
  設定はイベントサービス運用コマンドを使用して行います。詳細は“リファレンスマニュアル(コマンド編)”の“essetcnf”および“essetcnfchnl”を参照してください。