2

ASP.Net Webロールのインスタンス数を変更すると、現在処理中の要求にどのように影響するかを調べることができません。

シナリオは次のとおりです。

  1. ASP.Netサイトは6つのインスタンスで展開されます
  2. コンソールを介して、インスタンス数を4に減らします

Azureは、現在リクエストが進行中の場合にプールからインスタンスを削除しないほど賢いですか、それともリクエストの途中でインスタンスを強制終了するだけですか?

私は紺碧のドコ、グーグル、そしてMS tech supportへの多くの電子メールを通り抜けてきましたが、どれもこの一見単純な質問に答えることができませんでした。シャットダウンなどによってトリガーされるイベントについては知っていますが、実際の人が応答の要求を待っているWebサイトのシナリオでは実際には役に立ちません。

4

2 に答える 2

3

強制終了するインスタンスを選択することはできません。これは主に、Windows Azureのインスタンス割り当てスキームが原因であり、インスタンスはさまざまな障害ドメイン(データセンターのさまざまな領域(さまざまなラックなど)に分割されます)に分割されます。強制終了するインスタンスを選択すると、残りのインスタンスが同じフォールトドメインにある状態になり、SLAが無効になる可能性があります。

つまり、ロールインスタンスがシャットダウンしているときにイベントが発生します(OnStop()イベント)。このイベントをキャプチャすると、VMのシャットダウンに備えてインスタンスのクリーンアップを実行できます。この時点でロードバランサーから削除されたかどうかは思い出せませんが、単純なPowerShellコマンド(Set-RoleInstanceStatus -Busy)を使用していつでも強制的に実行できます。このようにして、asp.netインスタンスは要求を受け取らなくなり、適切な方法でより簡単にシャットダウンできます。

編集:申し訳ありません-あなたの質問のすべてに完全に対処していませんでした。OnStop()をキャプチャするため、そのインスタンスで何も処理されていないことを確認するメカニズムを実装する必要がある場合があります。ロードバランサーを使用しておらず、リクエストがかなり迅速に処理される(2〜5秒)と仮定すると、残りのリクエストをクリアするために長く待つ必要はありません。おそらく、処理されているアクティブなリクエストの数を確認するためのパフォーマンスカウンターがあります。

于 2011-05-10T00:38:00.247 に答える
2

Davidの答えに追加するだけです。OnStopイベントは、ロードバランサーをオフにしているときに発生します。Webアプリの場合、通常、LBから切断されてからインスタンスがシャットダウンされるまで、すべてのリクエストをブリードアウトするのに十分な時間です。ただし、長時間実行またはステートフル接続(おそらくワーカーロールへの接続)の場合、場合によっては突然の切断が発生します。OnStopメソッドはLBからユーザーを削除しますが、開いている接続を終了しません。それは単にあなたが新しい接続を得るのを防ぐだけです。Webアプリの場合、これは通常、リクエストを完了するのに十分な時間です(必要に応じて、OnStopでもシャットダウンを遅らせることができます)。

于 2011-05-10T01:09:33.737 に答える