しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Microsoft Azure Web サイトのロードバランサーの挙動が変わった気がしたので調べた

以前にロードバランサーの挙動を Windows Azure Web サイトのロードバランサーが不可解な挙動をしている件について - しばやん雑記 で確認した時には、アクセスに大幅な偏りが見られましたが、ARRAffinity クッキーの扱いが微妙に変わっているので再度検証してみました。

前回と同じように共有モードにしてある Web サイトを、今回は 4 インスタンスまで増やして loader.io で負荷をかけてみました。

f:id:shiba-yan:20140516210905p:plain

アクセスログを見る限りでは、前回ほどの偏りは無くなっているように思います。1 つだけ少ないインスタンスもあるみたいですが、ラウンドロビンになったと考えていて良さそうです。

前回は「ARRAffinity の値はクッキーを削除しても変化しない」と書きましたが、今はクッキーを削除するごとに別の値へ変わっていくので、セッションアフィニティを行いつつも全てのインスタンスへ負荷をちゃんと分散するようになってくれたみたいです。*1

参考までに loader.io 側のグラフを載せておきます。

f:id:shiba-yan:20140516212309p:plain

最初の方は各インスタンスがコールドスタートになっているので遅いですが、その後は 250ms 前後で落ち着いています。SendGrid は東アジア付近にデータセンターを持っていないらしいので、レイテンシが大きめなのは仕方ないですね。

ちなみに ARRAffinity は Web サイトのインスタンス ID になっているので、それを利用することで特定のインスタンスへアクセスすることも出来ると No.1 がブログに書いています。

Azure Webサイトで特定インスタンスに接続する « ブチザッキ

インスタンス ID の先頭 6 文字はログファイルの書き出しの prefix としても使われているので、Web サイトではユニークなインスタンス ID が必ず割り当てられていることを知っておいた方が良いと思います。

*1:前までは 3 インスタンス用意していても 1 つしか使われないことがあった