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