我们正在尝试使用 HttpWebRequest 提交大量并发 Web 请求,以对服务器进行压力测试。
对于此示例,正在测试的 Web 服务方法只是暂停 30 秒,然后返回,以便进行队列深度和同时请求测试。
客户端日志显示 200 个调用在约 1 秒内成功并行排队,使用多个调用:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.BeginGetResponse();
Fiddler 显示第一个约 80 个请求同时发送到服务器,然后在任何初始响应返回之前,Fiddler 显示剩余的约 120 个请求以大约 1/秒的速度添加。
按照这里的建议,可以将有效限制从大约 10 增加到大约 80。我希望在不诉诸多台机器/流程的情况下消除下一个障碍。有任何想法吗?
// Please excuse the blind setting of these values to find the other problem.
// These were set much higher but did not help
ThreadPool.SetMinThreads(30, 15);
ThreadPool.SetMaxThreads(30, 15);
System.Net.ServicePointManager.DefaultConnectionLimit = 1000;
在 App.Config 中
<system.net>
<connectionManagement>
<clear/>
</connectionManagement>
</system.net>
还有一点是,当在简单的延迟测试之前执行并完成大量请求时,延迟测试能够达到80个左右同时进行。从“冷”开始通常将其限制在 10 左右。