HttpClient在load下抛出HttpRequestException

时间:2017-12-19 15:35:00

标签: .net http dotnet-httpclient

我们负载测试与各种通信的.NET Web应用程序(在IIS中托管) 服务。
但是,在测试开始并且负载增加后的某个时间,let promises = []; // push promise b promises.push(requestJSON(..).then((response) { // push promise a promises.push(requestJSON(..)); // push promise c promises.push(requestJSON({foo: response.bar}); promises.all((data) => { console.log(data.length) // --> 3 }); });开始向我们抛出错误:

HttpClient

使用Wireshark进行的调查显示,这些请求甚至无法到达负载均衡器 - 它表明在发生这种情况时TCP会重置。大概的时间范围是90-100秒,我认为它与默认的HttpClient超时为100秒这一事实有关(我们还没有修改它)。
我们使用一个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 <ip_address_here>:443 实例进行与此特定服务的所有通信,因此可以以并发方式访问它。
我们在HttpClient类中构建它:

BackendClient

private readonly HttpClient _httpClient = new HttpClient(); 方法中使用它:

BackendClient

然后在var response = await _httpClient.SendAsync(requestMessage); 代码中处理它。
此问题仅显示在负载下,我们无法在其他任何地方重现它。
有人熟悉这个吗?我确定我们错过了一些设置。
我唯一看到的选择是附加一个traceListener并查看它显示的内容

0 个答案:

没有答案