我们负载测试与各种通信的.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并查看它显示的内容