8.3.6 CTMを使用して同時実行数を制御する
CTMを使用している場合,Stateless Session Beanの同時実行数を制御できます。
CTMは,J2EEサーバとは独立したプロセス群です。EJBクライアントとJ2EEサーバ間のStateless Session Beanの呼び出しを中継し,Stateless Session Beanを呼び出す際に,同時実行数制御をします。なお,CTMによる同時実行数制御の単位はJ2EEアプリケーションです。
(1) CTMを使用したStateless Session Beanの同時実行数制御
CTMによる同時実行数制御(流量制御)によって,次に示すチューニングができます。
-
CPUやI/O処理に掛かる負荷が異なる,複数のJ2EEアプリケーションがJ2EEサーバ上にある場合に,それぞれの条件に適した同時実行数が設定できます。
-
CTMで実行待ちキュー(スケジュールキュー)を管理するので,実行待ちリクエスト数を一定数以下に保ち,それ以上のリクエストが送信された場合にはクライアントに例外を通知できます。
-
特定のJ2EEサーバの負荷が高い場合に,ほかのJ2EEサーバにリクエストを振り分けられます。
CTMによるStateless Session Beanの同時実行数制御の例を次の図に示します。
- ポイント
-
CTMは同一ホスト上のJ2EEサーバでのStateless Session Beanの呼び出しを制御して,そのホスト上での同時実行スレッド数を制御できます。アプリケーションサーバマシンのマシンスペックにも左右されますが,1台のマシン当たりCTMデーモンを1プロセス起動して,J2EEサーバを2〜4プロセス起動する構成を推奨します。
なお,CTMによる同時実行スレッド数は,稼働中のCTMデーモンでも動的に変更できます。
CTMの同時実行数を制御する機能の詳細,および稼働中のCTMデーモンで実行するCTMの同時実行スレッド数動的変更の手順については,マニュアル「アプリケーションサーバ 機能解説 拡張編」の「3.4 リクエストの流量制御」を参照してください。
(2) EJBコンテナのインスタンスプーリングとの使い分けの指針
CTMを使用して同時実行数を制御することをお勧めします。なお,CTMによる同時実行数制御は,EJBコンテナでのインスタンスプーリングを利用した同時実行数制御と併用できます。
EJBコンテナの機能を使用した同時実行数制御に加えて,CTMによって同時実行数を制御するメリットは,次のとおりです。
-
あるEJBコンテナで同時実行数が上限に達した場合に,ほかのJ2EEサーバにリクエストを振り分けられます。
-
同時実行数が上限に達していなくても,特定のJ2EEサーバの負荷が高い場合,ほかのJ2EEサーバにリクエストを振り分けられます。
-
CTMで実行待ちキュー(スケジュールキュー)の管理をして,実行待ちリクエスト数を一定に保ち,それ以上のリクエストを受け付けた場合はクライアントにエラーを通知できます。
- ポイント
-
CTMによる同時実行数制御とEJBコンテナでのインスタンスプーリングを併用する場合,Stateless Session Beanのインスタンスプーリング数はCTMの同時実行数以上に設定する必要があります。
また,運用時にCTMの同時実行数を動的に変更する場合は,Stateless Session Beanのインスタンスプーリング数の上限は無制限にする必要があります。なお,デフォルトでは無制限に設定されています。デフォルトから変更しないでください。