3.3.3 CTMデーモン
CTMデーモンは,クライアントからのリクエストを処理してリクエストのスケジューリングを実現する,スケジューラの機能を持つプロセスです。
- 注意事項
-
Windowsのサービスから起動する場合は,開始コマンドのオプションに,「-Dvbroker.orb.isNTService=true」を指定してください。
クライアントから送信されたリクエストは,CTMレギュレータというプロセスを経由して,CTMデーモンが受信します。CTMレギュレータについては「3.3.4 CTMレギュレータ」を参照してください。
なお,CTMデーモンの機能を使用するための設定は,CTMデーモンを起動するときにctmstartコマンドの引数として指定します。また,運用管理ポータルで構築したシステムを運用している場合は,論理CTMであらかじめ設定しておくことができます。
CTMデーモンは,次の手順でリクエストを処理します。
-
リクエストの振り分け
-
スケジュールキューへのリクエストの登録
-
業務処理プログラムの呼び出し
-
処理結果の返却
それぞれの処理内容について説明します。
(1) リクエストの振り分け
CTMデーモンの負荷に応じて,リクエストを受け付けたCTMデーモンがそのままリクエストを処理するか,またはほかのCTMデーモンに転送するかを決定して振り分けます。
CTMデーモンは,リクエストを受け付けると,負荷情報をほかのCTMデーモンと連絡し合ってリクエストの振り分け先を決定します。
CTMデーモンは,特定の範囲(CTMドメイン)内のCTMデーモン間で,それぞれが処理対象としているJ2EEアプリケーションに含まれる業務処理プログラムの情報を共有しています。共有した情報は,CTMデーモンと同じホストに配置されているグローバルCORBAネーミングサービスに登録されています。これによって,リクエストを受け付けたCTMデーモンの処理対象に該当する業務処理プログラムがない場合でも,CTMデーモンが持つ情報を基に,適切なCTMにリクエストを振り分けられます。
グローバルCORBAネーミングサービスについては,「3.3.6 グローバルCORBAネーミングサービス」を参照してください。CTMドメインについては,「3.3.5 CTMドメインとCTMドメインマネジャ」を参照してください。
リクエストは,create時の選択ポリシー,およびスケジュールポリシーに従って振り分けられます。
create時の選択ポリシーおよびスケジュールポリシーは,CTMデーモンを起動するときに,次のどちらかを選択できます。
-
それぞれのCTMデーモンの負荷状況に応じて,負荷が軽いCTMデーモンにリクエストを振り分けるポリシー
-
リクエストを受け付けたCTMデーモンが優先的に処理をするポリシー
ただし,この場合でも,リクエストを受け付けたCTMデーモンの負荷が高い状態の場合,または閉塞状態の場合は,ほかのCTMデーモンに処理を振り分けます。負荷の高さは,それぞれのキューでのリクエストの滞留率から計算されます。
なお,create時の選択ポリシーおよびスケジュールポリシーのタイミングについては,「3.8 リクエストの負荷分散」を参照してください。
スケジュールポリシーは,ctmstartコマンドの引数-CTMDispatchPolicyに指定します。create時の選択ポリシーは,ctmstartコマンドの引数-CTMCreatePolicyに指定します。
(2) スケジュールキューへのリクエストの登録
スケジュールポリシーに従って振り分けられたリクエストは,スケジュールキューに登録されます。スケジュールキューに登録できるリクエストの数は,CTMデーモンを起動する時に,設定されています。この値を超えてリクエストを転送された場合には,クライアントにエラーが返却されます。また,指定を省略した場合は,50が設定されます。
登録できるリクエストキューの長さは,CTMデーモンを起動するときにctmstartコマンドの引数-CTMMaxRequestCountに指定します。また,運用管理ポータルで構築したシステムを運用する場合は,あらかじめ論理CTMの設定で設定しておくことができます。ctmstartコマンドについては,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「ctmstart(CTMデーモンの開始)」を参照してください。運用管理ポータルの設定の詳細については,マニュアル「アプリケーションサーバ 運用管理ポータル操作ガイド」の「10.7.2 スケジューリングの設定」を参照してください。
(3) 業務処理プログラムの呼び出し
スケジュールキューに登録されたリクエストは,CTMデーモンの処理対象であるJ2EEサーバ上の業務処理プログラムを呼び出します。なお,異常終了したJ2EEサーバや,ハングアップした業務処理プログラムを呼び出すことはありません。
(4) 処理結果の返却
処理の実行後,業務処理プログラム(Enterprise Bean)から返却された応答は,CTMデーモンを経由してクライアントに返却されます。なお,リクエストがスケジュールキューに登録されてから取り出されるまでの時間がリクエストのタイムアウト値を超えている場合は,リクエストが破棄されます。