Exceção ECONNRESET da sonda de saúde padrão do Gateway de Aplicativo

Exceção ECONNRESET da sonda de saúde padrão do Gateway de Aplicativo

Temos um gateway de aplicativo configurado na frente de nosso aplicativo Web em uma VM do Azure. Temos visto exceções ECONNRESET regulares que parecem ser geradas como resultado da investigação de integridade padrão. Posso ver a cada 30 segundos algumas solicitações para 127.0.0.1. Regularmente (mais de 20 ocorrências nas últimas 24 horas), uma dessas solicitações resulta em uma exceção ECONNRESET conforme a saída abaixo:

17:10:35 [Information] () "Request starting HTTP/1.1 GET http://127.0.0.1/  "

17:10:35 [Information] () {"Connection":["Keep-Alive"],"Host":["127.0.0.1"],"Max-Forwards":["10"]}

17:10:35 [Information] () Executing action method "HonestyBoxWeb.Controllers.HomeController.Index (HonestyBoxWeb)" with arguments (null) - ModelState is Valid

17:10:35 [Information] () Executing ViewResult, running view at path "/Views/Home/Index.cshtml".

17:10:35 [Information] () Executed action "HonestyBoxWeb.Controllers.HomeController.Index (HonestyBoxWeb)" in 2.8666ms

17:10:35 [Information] () "Request finished in 5.2758ms 200 text/html; charset=utf-8"

17:10:35 [Information] () Connection id ""0HLCE7PIFCIGH"" request processing ended abnormally.
System.IO.IOException: Error -104 ECONNRESET connection reset by peer ---> Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.Internal.Networking.UvException: Error -104 ECONNRESET connection reset by peer
   at Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.Internal.LibuvOutputConsumer.<WriteOutputAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.Internal.LibuvConnection.<Start>d__26.MoveNext()
   --- End of inner exception stack trace ---
   at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.PipeCompletion.ThrowFailed()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.Pipe.GetResult(ReadResult& result)
   at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.Pipe.Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.IReadableBufferAwaiter.GetResult()
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Frame`1.<ProcessRequestsAsync>d__2.MoveNext()

Parece que a verificação de integridade está postando uma solicitação e redefinindo a conexão. Estou interpretando isso corretamente e há alguma maneira de resolver isso?

Responder1

Este foi um problema no servidor Kestrel e foi resolvido na versão 2.1 do dotnet core.

Referência:https://github.com/aspnet/KestrelHttpServer/issues/2540

informação relacionada