5

フロントエンドMVC3WebアプリケーションはAsyncControllerを使用しています。これは、各インスタンスが何百もの長時間実行されるIOバウンドプロセスにサービスを提供しているためです。

Azureは、事前に決められた間隔(読んだWebサイトによって異なるようです)の後に「非アクティブな」httpセッションを終了するので、接続を維持するにはどうすればよいですか?

クライアントは接続を維持する必要があり、プロセスは30秒から5分以上実行されます。クライアントを接続/存続させるにはどうすればよいですか?私は当初、Asyncメソッドでタイムアウトを設定し、Responseオブジェクトを数バイトの出力でヒットすることを考えました。これは、応答をチャンク化してから、戻ってもう少し待つようなものです。ただし、MVC3はIISスレッドの非同期応答へのフックアップを処理しているため、これは機能しないと思います。非同期応答では、その時点ですでにビューがレンダリングされています。

AsyncControllerで非常に長いプロセスを実行し、Azure Load Balancerによってクライアントが切断されないようにするにはどうすればよいですか?発信者に即時応答を送信し、その発信者に別のリソースURLをポーリングまたはチェックするように依頼することは受け入れられません。

4

1 に答える 1

5

Azureロードバランサーのアイドルタイムアウトは4分です。クライアント側でTCPキープアライブを4分未満で構成して、接続を維持できるようにすることはできますか?

一方、クライアントごとに接続を長時間開いたままにしておくと、かなりの費用がかかります。これにより、サーバーごとに処理できるクライアントの数が制限されます。また、IISは、他の要求を処理するために接続が必要であると判断した場合、キープアライブに関係なく接続を閉じることを決定する可能性があると思います。

于 2012-09-22T20:53:23.367 に答える