WebLogic Server パフォーマンス チューニング ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

メッセージ駆動型 Bean のチューニング

以下の節では、メッセージ駆動型 Bean (MDB) のチューニングとベスト プラクティスについて説明します。

 


トランザクション バッチの使用

MDB のトランザクション バッチ処理では、複数の JMS メッセージを 1 つのコンテナ管理によるトランザクションで処理できます。バッチ処理を行うと複数のメッセージを扱うトランザクションのコストが償却され、適切に使用した場合には 2PC 処理と 1PC 処理のスループットの差が軽減したり、解消されたりすることもあります。『WebLogic エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「MDB のトランザクション バッチ処理」を参照してください。

注意: バッチ処理を使用する場合、同時に扱う MDB インスタンス数を減らす必要があることもあります。使用できる MDB インスタンスが多すぎる場合、メッセージはバッチ処理ではなく並行処理される可能性があります。「MDB スレッド管理」を参照してください。
注意: 通常、バッチ処理ではスループットが向上しますが、レイテンシ (個々のメッセージの MDB 処理が完了するまでの時間) も増大する場合があります。

 


MDB スレッド管理

MDB のスレッド管理については、同時実行性、すなわち同時にアクティブになれる MDB インスタンス数の観点から説明します。以下の節では、MDB の同時実行性について説明します。

同時 MDB の数の確定

表 10-1 は、1 つのサーバ インスタンスに対して同時に実行する MDB インスタンスを決定する方法を示しています。

表 10-1 WebLogic Server MDB の同時方式の決定 
ワーク マネージャまたは実行キューのタイプ
スレッド
デフォルトのワーク マネージャまたは制約のないワーク マネージャ
自動チューニングにより変化するが、最大で Min(max-beans-in-free-pool,16)
デフォルトのワーク マネージャ、自動チューニングを無効化
Min(default-thread-pool-size/2+1, max-beans-in-free-pool)

注意: これは、WebLogic Server 8.1 でのデフォルト スレッド プールの同時実行方式でもある。

カスタム実行キュー
Min(execute-queue-sizemax-beans-in-free-pool)
カスタム ワーク マネージャ、制約有り
自動チューニングにより変化するが、min-thread-constraint と Min(max-threads-constraintmax-beans-in-free-pool) の間

バッチ処理が有効化されたトランザクション対応 MDB では、デプロイされた各 MDB に専用のポーリング スレッドが作成されます。このポーリング スレッドは dispatch-policy で指定されたプールから割り当てられるものではなく、システムで動作している他のすべてのスレッドに追加される、完全に新しいスレッドです。「トランザクション バッチの使用」を参照してください。

同時方式の選択

以下の節では、アプリケーションに対して同時方式を選択するための全般的な情報を示します。

注意: アプリケーションにはそれぞれに固有の特性があります。同時方式はアプリケーションがその環境でどのように動作するのかに基づいて選択します。

 


外部ベンダ MDB の使用

以下の節では、外部ベンダ MDB 使用時の WebLogic Server の動作について説明します。

外部 MDB の同時方式の確定

外部 MDB の使用時には、WebLogic Server により 表 10-2 のように同時方式が決定されます。

表 10-2 外部ベンダ MDB の同時方式の確定
チューニング事項
参照情報
キュー
WebLogic MDB と同じ方式。
トピック : トランザクション非対応
同時実行数は常に 1。
トピック : トランザクション対応
WebLogic MDB と同じ方式。

外部 MDB 使用時のスレッドの利用

以下の節では、WebLogic Server を外部ベンダ MDB と相互運用する場合のスレッドの割り当て方法について説明します。

注意: 外部のトランザクション対応 MDB を使用する場合、外部ベンダの中には同時実行する MDB インスタンスごとに恒久的にスレッドを割り当てる必要があるものもあります。このようなスレッドは dispatch-policy で指定されたプールから取得され、MDB がアンデプロイされるまでプールに返されません。こうしたスレッドは共有されないため、MDB が同じプール内の他のリソースの処理を妨げることがあります。このような場合、必要に応じてプールのスレッド数を増加します。

  ページの先頭       前  次