2.7.2 サーバからの負荷情報からクライアント側で判断する場合
この機能を使用する場合は,次の定義を指定してください。
-
Client .NET構成定義
<nameService>要素のloadBalance属性にtrueを指定
-
TP1/Server側のスケジュールサービス定義
「scd_announce_server_status=Y(デフォルト値)」を指定
この指定によって,クライアント側で,サーバから得たサーバの負荷レベルを基に,サービス要求を行うOpenTP1ノードを決めてRPCを実行します。
この場合,クライアントでは窓口となるTP1/Serverのネームサービスにサービス情報を問い合わせます。そのあと,サーバの負荷レベルを含むサービス情報を,Client .NET構成定義<nameService>要素のcacheCapacity属性に指定された大きさのキャッシュ領域に一時的に保持します。
クライアントからのRPC実行時に,このキャッシュ領域中に該当するサービス情報が存在する場合には,窓口となるTP1/Serverのネームサービスに対してサービス情報の問い合わせを行いません。
クライアントではLRU(Least Recently Used)方式でキャッシュを管理しているため,キャッシュ領域が不足した場合には参照されていないサービス情報から順に削除します。また,Client .NET構成定義<nameService>要素のcacheTime属性に指定した有効時間が過ぎたサービス情報は,RPC実行時にキャッシュ領域から削除され,ネームサービスに対してサービス情報を問い合わせます。
Client .NET構成定義<nameService>要素のcacheCapacity属性の指定値を大きくすると,多くのサービス情報を格納でき,窓口となるTP1/Serverのネームサービスとの通信回数を削減できます。ただし,多くのキャッシュ領域中からサービス情報を検索するのでオーバヘッドが掛かります。
Client .NET構成定義<nameService>要素のcacheCapacity属性の指定値を小さくすると,キャッシュ領域に該当するSPPの各ノードのサービス情報が入りきらないことがあります。その場合は,クライアントから再度RPCを実行しても,キャッシュ領域に入りきらなかったノードのSPPに対してはRPC要求を実行しません。
Client .NET構成定義<nameService>要素のcacheTime属性の指定値を小さくすると,古いサービス情報はただちに削除され,窓口となるTP1/Serverのネームサービスに新しいサービス情報を問い合わせます。この場合,常に最新のサービス情報をキャッシュ領域に保持できるため,サーバの負荷に応じてRPC要求を振り分けられます。ただし,ネームサービスとの通信回数が増え,また,キャッシュ領域の書き換え処理にもオーバヘッドが掛かります。
Client .NET構成定義<nameService>要素のcacheTime属性の指定値を大きくすると,窓口となるTP1/Serverのネームサービスとの通信回数を削減できます。ただし,SPPの状態変化への対応が遅れるため,起動していないSPPに対してRPC要求を実行してしまうことがあります。この場合は,別のSPPに対してRPC要求を実行する前に,キャッシュ領域中の該当するサービス情報を削除し,窓口となるTP1/Serverのネームサービスに対して,該当するサービス情報の削除要求をします。