如何解决来自不同下游服务器的SocketException“连接尝试失败...”?

问题描述 投票:1回答:1

我们的Azure Web角色在收到许多HTTP请求时偶尔会遇到SocketException。异常表明无法连接到某些下游服务器,但它们并非全部来自同一服务器,实际上它们来自属于不同Azure服务的不同服务器IP,尤其是Azure Key Vault和Azure搜索,因此这非常重要问题不太可能出在下游服务器上。在某些情况下,失败是由于Azure SQL发出的,因为请求不是HTTP协议,因此问题一定不在HTTP层中。我希望知道如何解决该问题,确认/证明这确实是我们的Web角色VM中的客户端问题,以及如何监视该问题即将发生。也许我们的网络角色用尽了并发TCP连接?也许它耗尽了网络吞吐量?也许我们没有可用的线程来拾取打开的连接?我们可以基于Windows性能计数器来监视所有这些事情,我想知道还有什么可以解释这种连接问题的。

异常ToString()开头:

Exception = System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond |Hidden-IP|:443
   at System.Net.Sockets.Socket.InternalEndConnect(IAsyncResult asyncResult)
   at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
   --- End of inner exception stack trace ---
   at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)
   at System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)
   --- End of inner exception stack trace ---
   at Microsoft.Rest.RetryDelegatingHandler.<SendAsync>d__15.MoveNext()
.net dotnet-httpclient azure-web-roles socketexception
1个回答
0
投票

我们正在遇到相同的问题。奇怪的是,我们有多个Web应用程序在同一服务器上运行。对于有些人来说,它起作用,而对于有些人来说,它却没有。而且,它为所有人服务了一段时间。

任何想法可能是什么?我不认为我们的IP被阻止或未配置WebSocket,否则它不适用于所有应用。唯一的区别是当前正在运行的应用程序是.NET,而无法运行的应用程序是.NET Core。但是正如我所说,.NET Core的工作时间直到星期五。

© www.soinside.com 2019 - 2024. All rights reserved.