highlight js

2012年12月10日月曜日

[AWS][ELB]ELBがスケールアウトされないケース

ELBがスケールアウトされず、Latency低下に悩んでた原因がハッキリしたのでメモ。

状況
アドサービスの入り口部分で、
フロントをさばいているELBのLatencyが、
ピークタイムに不自然な動き、Latencyが1sec超えるなどの遅延。
(何故かMAX3秒以上は遅延しない。)


対応
memcachedへのアクセスをinternal ELB経由で行なっていた部分を
IP直指定とした。
Latencyは 10ms前後で落ち着いた。
このことから、遅延原因はinternal ELBと断定。


ELBの動作
SA様に聞いた所、
ELBは、内部的にEC2を動かして動作させてるとのことなのだが、
そのインスタンスが一定条件を満たした際に、ELBのスケールアウトが行われる。
(スケールアップも有るのかな?)

スケールアウト条件は、対象インスタンスの
CPU Utilization、Network IN/OUTにて判定されるとの事。
小さいデータを件数多く捌く、今回のような使用方法だと
適切にスケールアウトされない事がある。
らしい。
しきい値については聞き漏れだったと思う。
しかしながらブラックボックスぽいな。。

ちなみに、遅延発生時のinternal ELBへのアクセス件数は
10000 req /1 min  なので
約 167 req / 1sec.
※訂正 グラフが跳ね上がる形で、20000〜60000弱のケースまで色々のようだ。
 跳ねてるタイミングで、ELBがアカン感じだったのかな。。

やり取りしていたデータ長は
数百バイト〜数キロバイト。10キロバイト前後が最も多いか。


まとめ
とりあえず、ELBで小さいデータを取り扱う際は
上記のことを頭の片隅に。。。
ELBは使わないでhaproxyとかでさばいたり、
プログラム側で対応したりするのが現状のベターな選択肢かと。


CloudWatch上では、Internal ELBが捌ききれていない事を示すグラフなどは確認できなかった。



0 件のコメント:

コメントを投稿