经过1,000多次成功的呼叫后,获得“强制关闭现有连接”

问题描述

我正在对客户端和服务器代码进行一些负载测试。随着事情的发展,前1,000个电话就可以了。但是(在某些运行中),我开始收到以下异常:

System.Net.Http.HttpRequestException: The SSL connection Could not be established,see inner exception.  
---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host..  
---> System.Net.sockets.socketException (10054): An existing connection was forcibly closed by the remote host.

一些搜索表明,常见的解决方案是添加以下代码

System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

但这似乎可以解决所有呼叫均无法正常工作的问题。在我的情况下,在开始遇到上述异常之前,我可以成功拨打1000多个电话。

我问的真正目的是,在这种情况开始发生之后,我会遇到很多相同类型的失败。

我想知道我的HttpClient在发生这种情况之后是否处于故障状态?如果是,该如何解决? (我的HttpClient是静态的,如果失败了,那么我所有的通话都会失败。)

注意:我的代码作为NuGet运行,需要在.Net Framework 4.7和.Net Core 3.1中运行。

解决方法

不应与您的代码有关,这是主机拒绝连接,它可能由于您发送的请求过多而关闭,或者很有可能限制了您的速率。

,

我认为此问题是由于WSO2 API管理器限制了连接数所致。我们更改了WSO2服务器上的某些设置,此问题消失了。 (我不知道WSO2管理员所做的更改。)