Cosminexus 機能解説

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

11.4.3 リクエストの同時実行数の動的変更

CTMを使用して流量制御をしている場合に,CTMデーモンを停止しないでスケジュールキュー単位のリクエストの同時実行数を動的に変更できます。これによって,スケジュールキューが対応するサービスの内容に応じて,同時実行数を一時的に増加させたり,減少させたりできます。

CTMの同時実行数の動的変更は,ctmchparaコマンドで実行します。CTMのスケジュールキューの同時実行数の変更については,マニュアル「Cosminexus システム運用ガイド」を参照してください。ctmchparaコマンドの詳細については,マニュアル「Cosminexus リファレンス コマンド編」を参照してください。

ポイント
ctmchparaコマンドで変更したスケジュールキュー単位の同時実行数は,CTMデーモンを停止するまで有効です。個別のJ2EEアプリケーションに設定したparallel countの値として保存はされません。一度CTMデーモンを再起動してJ2EEアプリケーションを再開始する場合には,個別のJ2EEアプリケーションに設定したparallel countの値が有効になります。
<この項の構成>
(1) 動的変更の処理の仕組み
(2) 同時実行数に指定できる値

(1) 動的変更の処理の仕組み

CTMによる同時実行スレッド数の動的変更の概要を,次の図に示します。

図11-15 CTMによる同時実行数の動的変更の概要

[図データ]

図11-15について,(a)〜(c)で説明します。

(a) 同時実行数を動的変更する前の状態(スケジュールキューとしての同時実行数は5)

同時実行数を動的変更する前の,J2EEサーバ起動時の状態です。CTMデーモンのスケジュールキューは,J2EEサーバ1のアプリケーションとJ2EEサーバ2のJ2EEアプリケーションで共有されています。

J2EEサーバ1のJ2EEアプリケーションでは,Stateless Session Beanの属性として,同時実行数(parallel count)が3に設定されています。J2EEサーバ2のJ2EEアプリケーションでは,Stateless Session Beanの属性として,同時実行数(parallel count)が2に設定されています。この場合,スケジュールキュー単位の同時実行数は,それぞれのJ2EEアプリケーションの同時実行数を足した5になります。

それぞれのJ2EEサーバでは,リクエスト処理要求を受けると,必要に応じてリクエスト処理用のスレッドを生成します。最大でJ2EEアプリケーションのparallel countに設定した数分のスレッドが生成されます。生成されたスレッドは,削除されないでそのまま常駐スレッドになります。

なお,parallel countは,サーバ管理コマンドで設定,変更できます。

(b) 同時実行数を動的変更したあとの状態(同時実行数を8に増やした場合)

スケジュールキュー単位の同時実行数を動的に8に増やした場合について説明します。

スケジュールキュー単位の同時実行数を動的に増やすと,変更後の同時実行数に合わせて,それぞれのJ2EEアプリケーションのリクエスト処理用の常駐スレッド数も変更されます。

なお,常駐スレッド数が変更されるときには,スケジュールキューを共有しているJ2EEアプリケーションで,常駐スレッド数の平均化が実施されます。例えば,三つのJ2EEサーバ上のJ2EEアプリケーションのparallel countがそれぞれ40,30,60で,それぞれ常駐スレッドが最大数作成されている場合に,スケジュールキュー単位の同時実行数を120に変更しようとすると,それぞれのJ2EEサーバ上の常駐スレッド数は,「120(同時実行数)÷3(スケジュール共有数)」で平均化されて,40になります。

図11-15の場合は,同時実行数8を二つのJ2EEサーバで処理するので,常駐スレッド数がそれぞれ4ずつに変更されます。

(c) 同時実行数を動的に変更したあとの状態(同時実行数を1に減らした場合)

スケジュールキュー単位の同時実行数を1に減らした場合について説明します。

同時実行数を減らす場合も,変更後の同時実行数に合わせて,それぞれのJ2EEアプリケーションのリクエスト処理用の常駐スレッド数が変更されます。この場合も,常駐スレッド数は平均化されます。

ただし,スケジュールキュー単位の同時実行数を,スケジュールキューを共有しているJ2EEアプリケーションの数よりも小さくした場合,単純に常駐スレッド数を平均化すると,リクエストを受け付けないJ2EEサーバが出てしまいます。これを防ぐため,常駐スレッドは最低で1個は確保されます。

図11-15の場合,同時実行数1を二つのJ2EEサーバで処理するので,それぞれのJ2EEサーバの常駐処理スレッドは,最低保障常駐スレッド数である1になります。ただし,この場合も,同時に処理されるリクエストの数は,同時実行数分だけになります。つまり,J2EEサーバ2での処理が完了するまで,J2EEサーバ1のスレッドでは処理が実行されません。

(2) 同時実行数に指定できる値

同時実行数を動的変更するときに,指定できる値について説明します。

同時実行数は,1〜「スケジュールキューを共有しているJ2EEアプリケーションの数×127」までの整数で指定できます。127は,一つのJ2EEアプリケーションで処理できる同時実行数(parallel count)の最大数です。

ただし,CTMデーモンを起動するときに-CTMDispatchParallelCountに指定した値を超える値は指定できません。

次の値を指定した場合は,エラーが出力されて,同時実行数は変更されません。