scdmulti
形式
{{scdmulti 〔-m マルチスケジューラデーモン数〕 〔-p ポート番号〕 〔-g マルチスケジューラグループ名〕 〔-t〕}}
機能
マルチスケジューラ機能を提供するマルチスケジューラデーモンに関する情報を指定します。
マルチスケジューラ機能を使用する場合,この定義コマンドとともに次の定義コマンドおよびオペランドを指定する必要があります。
RPC受信側:ユーザサービス定義のscdmulti定義コマンド
RPC送信側:ユーザサービス定義のmulti_scheduleオペランド
オプション
●-m マルチスケジューラデーモン数
〜〈符号なし整数〉((1〜4096))《1》
マルチスケジューラデーモンのプロセス数を指定します。
このオプションで起動するプロセスは,-pオプションの指定値から順にポート番号が割り当てられます。
● -p ポート番号
〜〈符号なし整数〉((5001〜65535))
マルチスケジューラデーモンのベースとなるポート番号を指定します。
マルチスケジューラ機能では,このオプション指定値から「(-pオプション指定値)+(-mオプション指定値)−1」までのポート番号を,順にマルチスケジューラデーモンに割り当てて起動します。
このオプションは,scdmulti定義コマンドを複数指定する場合,またはスケジュールサービス定義のscd_portオペランドを指定する場合には省略できます。その場合はscdmulti定義コマンドがすでに実行されていれば,「直前のscdmulti定義コマンドで使用したポート番号+1」がこのオプションの指定値となります。 scdmulti定義コマンドがまだ実行されてなく,スケジュールサービス定義のscd_portオペランドが指定されていれば,「scd_portオペランドの指定値+1」の値をこのオプションの指定値とします。そのほかの場合は定義エラーとなります。
このオプションの指定値によって決定した各マルチスケジューラデーモンのポート番号が,他スケジューラデーモンのポート番号と重複した場合は,定義エラーとなります。
●-g マルチスケジューラグループ名
〜〈1〜8文字の識別子〉《scdmltgp》
scdmulti定義コマンドで起動されたマルチスケジューラデーモンのグループ名を指定します。
マルチスケジューラデーモンを複数グループに分け,グループ間のサービス要求メッセージ受信処理が競合しないようにする場合にだけ指定する必要があります。
このオプションを指定した場合,このscdmulti定義コマンドで起動されたマルチスケジューラデーモンにサービス要求をスケジューリングさせたいユーザサーバのユーザサービス定義で,scdmulti定義コマンドの-gオプションに,このオプションに指定したマルチスケジューラグループ名を指定する必要があります。
このオプションを省略した場合,"scdmltgp"が指定されたものとします。したがって,"scdmltgp"はマルチスケジューラグループ名として使用しないでください。
●-t
マルチスケジューラデーモンがサービス要求を受信したとき,かつ,自ノードのユーザサーバが高負荷状態のときに,マルチスケジューラ機能を使用していないほかのノードのユーザサーバ(ユーザサービス定義のscdmulti定義コマンドで,マルチスケジューラ機能を指定していないユーザサーバ)にサービス要求を一部,転送し負荷分散するかどうかを指定します。
自ノードのユーザサーバの閉塞などによって,スケジュールできない場合には,このオプションを指定しなくても,サービス要求が負荷分散されます。
このオプションを指定すると,マルチスケジューラ機能を使用していないユーザサーバへの負荷分散処理はマスタスケジューラデーモン経由になるため,マスタスケジューラデーモンに負荷が集中することがあります。
サービス要求の負荷分散が行われる条件を次の表に示します。
scdmulti定義コマンドの-tオプションの指定 |
サーバの状態 |
サービス要求の負荷分散 |
|
---|---|---|---|
ノードA (サービス要求の転送元) (マルチスケジューラ機能の指定あり) |
ノードB (サービス要求の転送先) (マルチスケジューラ機能の指定なし) |
||
指定あり |
通常状態 |
通常状態 |
× |
高負荷状態 |
× |
||
スケジュールできない状態 |
× |
||
高負荷状態 |
通常状態 |
○ |
|
高負荷状態 |
× |
||
スケジュールできない状態 |
× |
||
スケジュールできない状態 |
通常状態 |
○ |
|
高負荷状態 |
○ |
||
スケジュールできない状態 |
×※ |
||
指定なし |
通常状態 |
通常状態 |
× |
高負荷状態 |
× |
||
スケジュールできない状態 |
× |
||
高負荷状態 |
通常状態 |
× |
|
高負荷状態 |
× |
||
スケジュールできない状態 |
× |
||
スケジュールできない状態 |
通常状態 |
○ |
|
高負荷状態 |
○ |
||
スケジュールできない状態 |
×※ |
- (凡例)
-
○:サービス要求を負荷分散します。
×:サービス要求を負荷分散しません。
- 注※
-
ユーザサーバの閉塞が原因で,スケジュールできない状態の場合だけ,スケジュールサービスは,ユーザサーバがスケジュールできない状態であることを把握できます。
ユーザサーバの閉塞以外の原因(例:メッセージ格納バッファ不足)で,スケジュールできない状態の場合は,サービス要求の転送先からサービス要求元にエラーが通知されます。
注意事項
TP1/Clientからマルチスケジューラ機能を使用してサービスを要求する場合については,マニュアル「OpenTP1 クライアント使用の手引」を参照してください。
マルチスケジューラデーモンが使用するポート番号は,必ず割り当て可能としてください。
-pオプションに指定するポート番号は,他プログラムで使用するウェルノウンポート番号と重複しない値で,かつ,OSが他プロセスに自動的に割り当てない値を指定してください。
マルチスケジューラデーモン起動時に,指定されたポート番号が割り当てられない場合は,スケジュールサービス開始処理をエラーとし,OpenTP1システムの起動を中止します。
マルチスケジューラデーモンは,OpenTP1のシステムサーバとして起動するため, 全scdmulti定義コマンドの-mオプションの指定値の合計を,システム環境定義のserver_countオペランド,およびプロセスサービス定義のprc_process_countオペランドに加える必要があります。 server_countオペランドの指定値が不足した場合は,マスタスケジューラデーモンが「hm02102」,または「hm02301」でアボートします。
この定義コマンドは複数指定できます。ただし,-gオプションを省略したこの定義コマンドを複数指定した場合,または-gオプションに同一名称を指定したこの定義コマンドを複数指定した場合は,定義エラーとし,OpenTP1システムの起動を中止します。
OpenTP1システム内の同一サービスグループに,マルチスケジューラ機能を使用しているユーザサーバと,マルチスケジューラ機能を使用していないユーザサーバが混在する場合,マルチスケジューラ機能を使用したサービス要求は,マルチスケジューラ機能を使用しているユーザサーバに優先して負荷分散されます。
この定義コマンドの使用は,TP1/Extension 1をインストールしていることが前提です。TP1/Extension 1をインストールしていない場合の動作は保証できませんので,ご了承ください。