キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
告知

JTAC-Mid-Career-Recruitment-2021.3

 AMATopBanner2021.4.23.JPG

 2021Apr.TopBanner.JPG

 

ACE:slowstart が機能していないように見える

361
閲覧回数
0
いいね!
0
コメント

2009年04月21日(初版)

TAC SR Collection
主な問題

slowstart timer を設定しているにも関わらず、slowstart が動作していないように見えることがあります。


たとえば、下記設定で rserver B を inservice にした場合、300秒経過する前に、新規コネクションが rserver A, B に均等に割り振られてしまうことがあります。

------------------------------------
serverfarm host SFarm1
predictor leastconns slowstart 300
rserver A 80
inservice
rserver B 80
------------------------------------

解決策

確立後すぐにクローズされるコネクションが多い場合、slowstart タイマーが切れるよりも早く、slowstart が終了することがあります。


slowstart 機能は、指定した時間をかけてゆっくりコネクション数が増えていくわけではなく、新規コネクション数やクローズしたコネクション数によって、コネクション分配の割合を決定するコネクション数ベースのアルゴリズムが使われています。


新規コネクションを割り当てる際、leastconn により、最もコネクション数の少ないサーバが選択されますが、slowstart が設定されている場合は、実コネクション数を使うのではなく、実コネクション数に重み付け値を掛けた値が使われます(重み付け値については後述します)。


たとえば、すでに500コネクションが割り振られたサーバ A と、新規に slowstart で稼動したサーバ B がある場合に、どのような計算が行われるかを以下に示します。

--------------------------------------------------------------------
Server Curr-Conns
A 500
B(slowstart) 0
--------------------------------------------------------------------

この例では、すでに稼働中のサーバは1台だけですので、稼働中サーバにおける コネクション数の平均値は500になります。重み付け値には、500を8で割った、62が使われます。ここで使用した数値「8」は、slowstart 対象サーバ以外のサーバに割り振られているコネクション数の平均値に応じて以下のような値が使われます。

  • 32未満の場合 ... 2
  • 128未満の場合 ... 4
  • 512未満の場合 ... 8
  • 2048未満の場合 ... 16
  • 2048以上の場合 ... 32

次に来るコネクションは、まだコネクション数が0であるサーバ B に割り振られます。

--------------------------------------------------------------------
Server Curr-Conns Weight Least-Conn-Calculation
A 500 1 500 (500 x 1)
B(slowstart) 1 62 62 (1 x 62)
--------------------------------------------------------------------
slowstart 中に leastconn の判定に使用するコネクション数は、重み計算後のコネクション数が使用されます。コネクションを1つ受け付けたサーバ B は、コネクション数が62であるとみなされます。


このようにして、重み計算後のコネクション数が最も少ないサーバに対して、新規コネクションが割り振られていき、サーバ B にコネクションが9つ割り振られると、重み計算後の値が558となり、サーバ A の500を超えます。ここで、サーバ A が最もコネクション数の少ないサーバとなり、次のコネクションは、サーバ A に割り振られるようになります。

--------------------------------------------------------------------
Server Curr-Conns Weight Least-Conn-Calculation
A 500 1 500 (500 x 1)
B(slowstart) 9 62 558 (9 x 62)
--------------------------------------------------------------------
slowstart アルゴリズムでは、コネクションがクローズすると、重み付け値がクローズしたコネクション分だけ減らされていきます。


以下の例では5つクローズしたため、62-5=57となり、重み計算後のコネクション数は228となります。

--------------------------------------------------------------------
Server Curr-Conns Weight Least-Conn-Calculation
A 500 1 500 (500 x 1)
B 4 57 228 (4 x 57)
--------------------------------------------------------------------
このような動作を繰り返していき、サーバ B の重みが1となった時点で、slowstart が終了となります。


なお、CSM の slowstart も同様のアルゴリズムが使われています。


(※ 本ドキュメントは、 A2 (1.1a) の動作をもとに作成しています。他のバージョンでは若干アルゴリズムが異なる場合があります。)