timeout documentationは、クライアントがロードバランサにデータを送信するときにクライアントがエラーを受け取ると報告します。Azureロードバランサは、タイムアウト後にサーバ側のソケットを開いたままにします。
接続が閉じられると、クライアントアプリケーションに次のエラーメッセージが表示されることがあります。「基になる接続が閉じられました:接続が維持されると予想された接続がサーバーによって閉じられました」
しかし、私たちのサービスファブリックエンドポイントでは、まだタイムアウトしているTCPソケットがまだ開いています。
クライアントは、タイムアウトが既に適用された後にTCP CLOSEを送信しました。
タイムアウトのためにロードバランサがtcp接続が閉じられたことをサービスファブリックノードに通知しないのはなぜですか?
サービスファブリックノード上のWindows OSが、アクティビティのタイムアウト後にソケットを閉じることはできますか。 TCP Keep-alive文書を見つけました.TCPキープアライブ機能は現在、アプリケーションで使用できません。
ここでは、アプリケーションレベルのキープアライブ/ハートビートを使用します。ハートビートがない場合、サーバーは接続を単独で終了します。ロードバランサのタイムアウトは、アプリケーションレベルのハートビートタイムアウトよりも大きいです。この解決策は機能します。ロードバランサの動作を説明してくれてありがとう。 – bencoder