CUP.NETからスケジュールキューを使うSPP(キュー受信型サーバ)にサービスを要求した場合,要求先SPPがあるノードのスケジューラデーモンが,いったんサービス要求メッセージを受信し,該当するSPPのスケジュールキューに格納します。スケジューラデーモンとは,スケジュールサービスを提供するシステムデーモンのことです。
長大なサービス要求メッセージは,一定の長さに分割してスケジューラデーモンに送信します。スケジューラデーモンは,サービス要求メッセージを組み立ててキュー受信型サーバのスケジュールキューに格納します。スケジューラデーモンは,OpenTP1システムごとに1プロセスです。そのため,分割されたサービス要求メッセージの受信処理が完了するまで,スケジューラデーモンはほかのサービス要求メッセージを受信できません。通信速度が遅い回線を使用して,長大なサービス要求メッセージを送信した場合,ほかのサービス要求のスケジューリングが遅延することがあります。また,システムの大規模化,マシンやネットワークの高性能化などに伴って,効率良くスケジューリングできないことがあります。この場合,従来のスケジューラデーモンとは別に,サービス要求受信専用デーモンを複数プロセス起動し,サービス要求メッセージ受信処理を並行動作させることによって,スケジューリング遅延を回避できます。この機能をマルチスケジューラ機能といいます。以降,従来のスケジューラデーモンをマスタスケジューラデーモン,サービス要求受信専用デーモンをマルチスケジューラデーモンと呼びます。
マルチスケジューラ機能の検討が必要なシステム構成については,マニュアル「OpenTP1 プログラム作成の手引」を参照してください。
マルチスケジューラ機能を使用することで,複数起動されているマルチスケジューラデーモンの中から,利用できるマルチスケジューラデーモンをランダムに選択してサービス要求を送信できます。マルチスケジューラデーモンをランダムに選択して,スケジューラダイレクト機能,またはネームサービスを使用したRPCを実行できます。
Client .NET構成定義の<rpc>要素のuse属性にscdを指定して,スケジューラダイレクト機能を使用したRPCを行う場合について説明します。
Client .NETでは,窓口となるTP1/Serverのネームサービスへ問い合わせることなく,マルチスケジューラデーモンをランダムに選択できるため,通信回数が削減されます。これによって,ネームサービスの負荷の軽減もできます。
サービス要求を送信するマルチスケジューラデーモンのポート番号は,次に示す範囲の値からランダムに選択されます。
Client .NET構成定義の<tp1Server>要素のport属性,または<scheduleService>要素のport属性には,マルチスケジューラデーモンのポート番号を指定します。マスタスケジューラデーモンとマルチスケジューラデーモンのベースとなるポート番号が連続している場合は,マスタスケジューラデーモンのポート番号を指定することもできます。Client .NET構成定義の<scheduleService>要素のmultiSchedulerCount属性には,TP1/Serverで起動しているスケジューラデーモンのプロセス数を指定します。Client .NET構成定義の<scheduleService>要素のmultiSchedulerCount属性に指定するプロセス数は,<tp1Server>要素のport属性,または<scheduleService>要素のport属性に指定するポート番号によって,次のように異なります。
表2-3 Client .NET構成定義の<scheduleService>要素のmultiSchedulerCount属性に指定するプロセス数の違い
<tp1Server>要素のport属性,または<scheduleService>要素のport属性の指定値 | <scheduleService>要素のmultiSchedulerCount属性の指定値 | |
---|---|---|
マルチスケジューラデーモンのベースとなるポート番号 | マルチスケジューラデーモンのプロセス数と同じ値,またはそれ以下の値を指定します。 | |
マルチスケジューラデーモンの任意のポート番号 | 「マルチスケジューラデーモンのポート番号の最大 - <tp1Server>要素のport属性,または<scheduleService>要素のport属性に指定したポート番号 + 1」の値,またはそれ以下の値を指定します。 | |
マスタスケジューラデーモンのポート番号 | マスタスケジューラデーモンとマルチスケジューラデーモンのベースとなるポート番号が連続している場合 | 「マルチスケジューラデーモンのプロセス数 + 1」の値,またはそれ以下の値を指定します。 |
上記以外 | 1を指定するか,または指定を省略します(マルチスケジューラデーモンは使用できません)。 |
なお,Client .NET構成定義の<tp1Server>要素で指定した窓口となるTP1/Server間で,スケジュールサービス定義のscdmultiで指定した値を統一する必要があります。
マルチスケジューラ機能を使用して,ネームサービスを使用したRPCを行う場合について説明します。サービス情報を一時的に格納する領域に,該当するサービス情報がないときはネームサービスにサービス情報を問い合わせます。サービス情報を基にマルチスケジューラデーモンをランダムに選択してサービス要求を送信します。
マルチスケジューラ機能を使用した場合,サービス要求を送信するスケジューラデーモンはClient .NET構成定義の指定によって異なります。
スケジューラダイレクト機能を使用したRPCの場合の,Client .NET構成定義の指定とスケジューラデーモンの関連を次の表に示します。
表2-4 Client .NET構成定義の指定とスケジューラデーモンの関連(スケジューラダイレクト機能を使用したRPC)
Client .NET構成定義の指定 | サービス要求を送信するスケジューラデーモン | ||
---|---|---|---|
<rpc>要素のuse属性 | <rpc>要素のuseMultiScheduler属性 | <scheduleService>要素のmultiSchedulerCount属性 | |
scd | true | 2以上の値 | ランダムに選択したスケジューラデーモン※ |
1,または指定を省略する | Client .NET構成定義の<tp1Server>要素のport属性,または<scheduleService>要素のport属性に指定したポート番号で起動されているスケジューラデーモン | ||
false | 無効 | Client .NET構成定義の<tp1Server>要素のport属性,または<scheduleService>要素のport属性に指定したポート番号で起動されているスケジューラデーモン |
ネームサービスを使用したRPCの場合の,Client .NET構成定義の指定とスケジューラデーモンの関連を次の表に示します。
表2-5 Client .NET構成定義の指定とスケジューラデーモンの関連(ネームサービスを使用したRPC)
Client .NET構成定義の指定 | サービス要求を送信するスケジューラデーモン | ||
---|---|---|---|
<rpc>要素のuse属性 | <rpc>要素のuseMultiScheduler属性 | <scheduleService>要素のmultiSchedulerCount属性 | |
nam | true | 無効 | サービス情報を基にランダムに選択したスケジューラデーモン※ |
false | マスタスケジューラデーモン※ |