0

2 つのインスタンスを持つ Azure Web ロールがあります。両方のインスタンスが「準備完了」です - 正常に動作しています。

私のデスクトップでは、同時に実行されている同じプログラムの 4 つのインスタンスがあり、HTTP 要求で Web ロール URL をヒットしています。ただし、ログによると、すべてのリクエストはインスタンス 0 のみにディスパッチされます。同時操作をテストするには、両方のインスタンスにリクエストをディスパッチする必要があります。

リクエストが 2 番目のインスタンスにディスパッチされないのはなぜですか? また、2 番目のインスタンスにディスパッチするにはどうすればよいですか?

4

2 に答える 2

1

これは、すべてのリクエストが同じ IP から送信されているため、ロード バランサーがリクエスト ルートを最適化している可能性があります。よくあるように見えますが、Azure の LB は真の馬鹿げたラウンド ロビンではありません。

これを予期していなかったが、サーバーが負荷を処理している場合は、問題ありません。メトリクスがサーバーがビジーであることを示すまで、2 番目のインスタンスをオフにすることもできます (お金を節約できます)。

同じ IP から負荷分散できるようにする必要がある場合は、おそらくキューの使用を検討します。これは Web リクエストでは珍しいことですが (一部のバックエンド処理に対して)。

于 2012-09-13T20:08:29.697 に答える
0

この動作は、IISの「キープアライブ」によるもののようです(<system.webServer><httpProtocol allowKeepAlive="true">。「キープアライブ」のため、クライアントがインスタンスによって提供されると、そのインスタンスでスタックします。

「keepalive」を無効にすると、それが削除され、リクエストはほぼランダムにすべてのインスタンスに到達するようになります。MSDNによると、「キープアライブ」を無効にするとパフォーマンスが低下する可能性がありますが、同時操作をテストするためには問題ありません。

于 2012-09-27T12:35:29.083 に答える