Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

11.4.1 リクエストの流量制御

CTMを使用した流量制御について説明します。

流量制御は,J2EEサーバで一度に実行される処理数の最大値を設定して,リクエストの同時実行数を制限する機能です。これによって,J2EEサーバの負荷を一定に抑え,安定した高いスループットを実現します。CPUや排他資源の競合も抑止できます。

CTMによる流量制御は,CTMデーモンおよびCTMデーモンが管理しているスケジュールキューを使用して実現します。

CTMによる流量制御の概要を,次の図に示します。この図は,J2EEアプリケーション単位でスケジュールキューを共有している場合の例です。

図11-14 CTMによる流量制御の概要

[図データ]

CTMデーモンでは,クライアントから受け付けたリクエストをスケジュールキューに登録して,J2EEアプリケーション単位に設定された同時実行スレッド数分ずつ実行します。クライアントからのリクエストが瞬間的に増加した場合でも,CTMデーモンによって流量が制御されるため,J2EEサーバで実行されるリクエストは同時実行スレッド数以上には増加しません。また,複数のJ2EEサーバのJ2EEアプリケーションで同じスケジュールキューを共有している場合は,そのJ2EEアプリケーション数および各J2EEアプリケーションの同時実行スレッド数の設定で,一度に処理できる業務処理プログラムを多重化できます。リクエストは,スケジュールキューの最大リクエスト登録数分まで受け付けられます。最大リクエスト登録数は,スケジュールキュー単位で設定できます。なお,スケジュールキュー単位での設定がない場合は,CTMデーモン単位の設定がデフォルトとなります。これを超えると,エラーが返却されます。

なお,J2EEアプリケーションの同時実行数の制御は,EJBコンテナでも実行できます。EJBコンテナの同時実行数制御とCTMの流量制御の組み合わせによる効果は次のとおりです。

CTMが制御するスレッドの最大値およびキューごとのリクエストの登録数は,CTMデーモンを起動するときに,ctmstartコマンドの引数-CTMDispatchParallelCountおよび-CTMMaxRequestCountに指定します。また,運用管理ポータルで構築したシステムを運用している場合は,あらかじめ論理CTMに設定しておくことができます。ctmstartコマンドまたは運用管理ポータルの設定の詳細については,マニュアル「Cosminexus リファレンス コマンド編」,またはマニュアル「Cosminexus 運用管理操作ガイド」を参照してください。

注意
  • CTMによる流量制御では,スケジュールキューごとに同時実行スレッド数(Parallel Count)を設定します。また,CTMに呼び出されるStateless Session Bean単位に,プールしておくインスタンス数の最大値(Pooled InstancesのMaximum)を指定できます。プールしておくインスタンス数の最大値がスケジュールキューの同時実行スレッド数よりも少ないと,CTMから呼び出された時にインスタンスが不足するおそれがあるのでご注意ください。
  • CTMを使用する場合,グローバルCORBAネーミングサービスのほかにそれぞれのホストのCORBAネーミングサービス(ローカルCORBAネーミングサービス)にもEJBオブジェクトリファレンスが登録されます。このため,アプリケーションの構成によっては,CTMを使用しないで直接ローカルCORBAネーミングサービスに対してlookupを実行してEnterprise Beanを呼び出すことも可能です。ただし,この場合,CTMからの同時実行スレッド数指定が保証されなくなります。このような使用方法はしないでください。