Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option 使用の手引


3.1.4 ノード間負荷バランス機能

ノード間負荷バランス機能とは,負荷の軽いサーバを選択してRPCメッセージを送信または転送して,他ノードにある同じサービスグループ名のサーバUAP間でサービス処理の負荷を分散させる機能です。ノード間負荷バランス機能は,ネームサービスが稼働している場合に使用できます。

ノード間負荷バランス機能を使用する場合は,RPC関連定義のrpc_loadbalanceオペランドにYを指定してください。

なお,TP1キャッシュ機能を使用する場合,CLサーバでは実行系だけがノード間負荷バランス機能による監視の対象となります。また,MCPを使用する場合,端末キューに滞留するメッセージについては,ノード間負荷バランス機能による監視の対象外となります。

〈この項の構成〉

(1) 負荷レベル

RPCメッセージは,各ノードの負荷レベルに応じて送信されます。次に示す負荷レベルがあります。

各ノードの負荷レベルは,負荷レベル監視間隔(RPC関連定義のloadcheck_intervalオペランドで指定)ごとに監視されます。負荷レベルは,ユーザが選択した方法に従って決定されます。

注意事項

特定のサービスでの,単位時間当たりの処理数を超えるサービス要求が,複数回の負荷レベル監視にわたって連続して発生した場合は,ノードの負荷が軽いときでも負荷レベルがLEVEL2に遷移します。この場合,処理スレッド数を見直して,サービス引き出しの多重度を上げてください。

注※

単位時間当たりの処理数は,次に示す計算式から算出される値です。

(1÷1サービス要求を処理する時間)×サービス引き出しの多重度

負荷レベルに変更があった場合は,各ノードのネームサービスに負荷レベルが通知され,サーバ情報が更新されます。

(2) 負荷レベルの決定方法

ユーザは,次に示す負荷レベルの決定方法を選択できます。

負荷レベルの決定方法は,RPC関連定義のloadcheck_typeオペランドで指定します。

注意事項

負荷レベルの決定方法を選択するときは,次に示す点を考慮してください。

  • TP1キャッシュ機能を使用する場合,処理キューの処理数は同期点処理が完了したときに更新されます。UAPでee_scd_msg_receive関数を呼び出した場合,ee_scd_msg_receive関数で受信した処理キューは,そのサービスが終了するまで滞留しているものと見なされます。サービスが終了したあと,処理数が更新されます。

  • サービス閉塞時に処理キューを引き出し禁止にしている場合(ユーザサービス関連定義のforbid_draw_serviceオペランドにYを指定),閉塞中のサービスの処理キューの滞留数は減少しません。そのため,負荷レベルが高くなることがあります。

(a) 固定の処理キュー処理率をしきい値とした決定方法

今回の負荷レベルは,前回の負荷レベル,およびノード間負荷バランスで使用する処理キュー処理率によって決定されます。処理キュー処理率とは,次に示す計算式から算出される処理率です。

処理キュー処理率=(負荷レベル監視間隔中に処理された処理キューの数÷前回の負荷レベルチェック時の処理キュー滞留数)×100

負荷レベルと処理キュー処理率について次の表に示します。

表3‒1 負荷レベルと処理キュー処理率

前回の負荷レベル

処理キュー処理率:q

今回の負荷レベル

LEVEL0

50 ≦ q

LEVEL0

q < 50

LEVEL1

LEVEL1

75 ≦ q

LEVEL0

50 ≦ q < 75

LEVEL1

q < 50

LEVEL2

LEVEL2

q = 100

LEVEL0

q < 100

LEVEL2

固定の処理キュー処理率をしきい値とした決定方法での,負荷レベルが遷移する例を次の図に示します。

図3‒5 負荷レベルが遷移する例(固定の処理キュー処理率をしきい値とした決定方法の場合)

[図データ]

負荷レベルが遷移する負荷レベル監視のチェックポイントごとに説明します。

C2(LEVEL0からLEVEL1への負荷レベルの遷移)

C1時点の処理キュー滞留数(P1)に対する,C1からC2までの負荷レベル監視間隔中に処理された処理キューの数(S1)の割合である処理キュー処理率が50%未満になったため,負荷レベルはLEVEL0からLEVEL1に遷移します。

C4(LEVEL1からLEVEL2への負荷レベルの遷移)

C3時点の処理キュー滞留数(P3)に対する,C3からC4までの負荷レベル監視間隔中に処理された処理キューの数(S3)の割合である処理キュー処理率が50%未満になったため,負荷レベルはLEVEL1からLEVEL2に遷移します。

C6(LEVEL2からLEVEL0への負荷レベルの遷移)

C5時点の処理キュー滞留数(P5)に対する,C5からC6までの負荷レベル監視間隔中に処理された処理キューの数(S5)の割合である処理キュー処理率が100%になったため,負荷レベルはLEVEL2からLEVEL0に遷移します。

(b) ユーザが指定する処理キュー滞留率をしきい値とした決定方法

今回の負荷レベルは,前回の負荷レベル,およびノード間負荷バランスでユーザが指定する処理キュー滞留率によって決定されます。処理キュー滞留率とは,次に示す計算式から算出される滞留率です。

処理キュー滞留率=(負荷レベル監視時にキュー中に滞留している処理キューの数※1÷メモリ関連定義のpce_noオペランドで指定したサービス処理キュー数※2)×100
注※1

TP1キャッシュ機能を使用する場合,CLサーバの実行系で自動的に確保される処理キュー数(UDP受信スレッド数+1)も別途確保されます。そのため,処理キュー滞留率が100%にならないことがあります。

注※2

TP1キャッシュ機能を使用する場合,XTC用ワーク領域(XTCPOOL)の確保によって,pce_noオペランドで指定した数以上のサービス処理キューを滞留させることができます。しかし,処理キュー滞留率を算出する場合,XTC用ワーク領域分については考慮されません(pce_noオペランドの指定値が計算式として使用されます)。そのため,処理キュー滞留率が100%を超えることがありますが,その場合でも100%として扱われます。

しきい値とする処理キュー滞留率の指定

RPC関連定義のlevelup_queue_rateオペランドおよびleveldown_queue_rateオペランドを次に示すとおりに指定することによって,サービスグループごとに処理キュー滞留率によって負荷レベルを決定するしきい値を指定できます。

set levelup_queue_rate = U1,U2
set leveldown_queue_rate = D0,D1

U1:サーバの負荷レベルがLEVEL1に上がったと判断する処理キュー滞留率

U2:サーバの負荷レベルがLEVEL2に上がったと判断する処理キュー滞留率

D0:サーバの負荷レベルがLEVEL0に下がったと判断する処理キュー滞留率

D1:サーバの負荷レベルがLEVEL1に下がったと判断する処理キュー滞留率

負荷レベルと処理キュー滞留率について次の表に示します。

表3‒2 負荷レベルと処理キュー滞留率

前回の負荷レベル

処理キュー滞留率:q

今回の負荷レベル

LEVEL0

q < U1

LEVEL0

U1 ≦ q < U2

LEVEL1

U2 ≦ q

LEVEL2

LEVEL1

q ≦ D0

LEVEL0

D0 < q < U2

LEVEL1

U2 ≦ q

LEVEL2

LEVEL2

q ≦ D0

LEVEL0

D0 < q ≦ D1

LEVEL1

D1 < q

LEVEL2

ユーザが指定する処理キュー処理率をしきい値とした決定方法での,負荷レベルが遷移する例を次の図に示します。

図3‒6 負荷レベルが遷移する例(ユーザが指定する処理キュー滞留率をしきい値とした決定方法の場合)

[図データ]

負荷レベルが遷移する負荷レベル監視のチェックポイントごとに説明します。ここでは,メモリ関連定義のpce_noオペランドで指定したサービス処理キュー数を2000とします。

C2(LEVEL0からLEVEL2への負荷レベルの遷移)

メモリ関連定義のpce_noオペランドで指定したサービス処理キュー数に対する,C2時点の処理キュー滞留数の割合(P2)がU2以上になったため,負荷レベルはLEVEL0からLEVEL2に遷移します。

C4(LEVEL2からLEVEL1への負荷レベルの遷移)

メモリ関連定義のpce_noオペランドで指定したサービス処理キュー数に対する,C4時点の処理キュー滞留数の割合(P4)がD1以下になったため,負荷レベルはLEVEL2からLEVEL1に遷移します。

C6(LEVEL1からLEVEL0への負荷レベルの遷移)

メモリ関連定義のpce_noオペランドで指定したサービス処理キュー数に対する,C2時点の処理キュー滞留数の割合(P2)がD0以下になったため,負荷レベルはLEVEL1からLEVEL0に遷移します。

(c) ユーザが指定する処理キュー滞留数をしきい値とした決定方法

今回の負荷レベルは,前回の負荷レベル,およびノード間負荷バランスでユーザが指定する処理キュー滞留数によって決定されます。処理キュー滞留数とは,負荷レベル監視時にキュー中に滞留している処理キューの数です。

しきい値とする処理キュー滞留数の指定

RPC関連定義のlevelup_queue_countオペランドおよびleveldown_queue_countオペランドを次に示すとおりに指定することによって,サービスグループごとに処理キュー滞留数によって負荷レベルを決定するしきい値を指定できます。

set levelup_queue_count = U1,U2
set leveldown_queue_count = D0,D1

U1:サーバの負荷レベルがLEVEL1に上がったと判断する処理キュー滞留数

U2:サーバの負荷レベルがLEVEL2に上がったと判断する処理キュー滞留数

D0:サーバの負荷レベルがLEVEL0に下がったと判断する処理キュー滞留数

D1:サーバの負荷レベルがLEVEL1に下がったと判断する処理キュー滞留数

TP1キャッシュ機能を使用する場合,CLサーバの実行系では,UDP受信スレッド数+1の処理キューが自動的に確保されます。自動的に確保される処理キュー数分を引いてlevelup_queue_countオペランドおよびleveldown_queue_countオペランドを指定してください。

負荷レベルと処理キュー滞留数について次の表に示します。

表3‒3 負荷レベルと処理キュー滞留数

前回の負荷レベル

処理キュー滞留数:n

今回の負荷レベル

LEVEL0

n < U1

LEVEL0

U1 ≦ n < U2

LEVEL1

U2 ≦ n

LEVEL2

LEVEL1

n ≦ D0

LEVEL0

D0 < n < U2

LEVEL1

U2 ≦ n

LEVEL2

LEVEL2

n ≦ D0

LEVEL0

D0 < n ≦ D1

LEVEL1

D1 < n

LEVEL2

ユーザが指定する処理キュー処理数をしきい値とした決定方法での,負荷レベルが遷移する例を次の図に示します。

図3‒7 負荷レベルが遷移する例(ユーザが指定する処理キュー滞留数をしきい値とした決定方法の場合)

[図データ]

負荷レベルが遷移する負荷レベル監視のチェックポイントごとに説明します。

C2(LEVEL0からLEVEL2への負荷レベルの遷移)

負荷レベル監視時にキュー中に滞留している処理キューの数(P2)がU2以上になったため,負荷レベルはLEVEL0からLEVEL2に遷移します。

C4(LEVEL2からLEVEL1への負荷レベルの遷移)

負荷レベル監視時にキュー中に滞留している処理キューの数(P4)がD1以下になったため,負荷レベルはLEVEL2からLEVEL1に遷移します。

C6(LEVEL1からLEVEL0への負荷レベルの遷移)

負荷レベル監視時にキュー中に滞留している処理キューの数(P6)がD0以下になったため,負荷レベルはLEVEL1からLEVEL0に遷移します。

(3) ノード間負荷バランス拡張機能

ユーザは次に示す指定ができます。

(4) ノード間負荷バランス機能によるRPCメッセージの送信先および転送先の決定

次に示す場合は,ノード間負荷バランス機能でRPCメッセージの送信先および転送先を決定します。