我们正在尝试使用HttpWebRequest提交大量的并发Web请求,以便对服务器进行压力测试。
对于此示例,正在测试的Web服务方法只是暂停30秒,然后返回允许队列深度和同时请求测试。
客户端日志显示200个呼叫在~1秒内并行成功排队,使用多次调用:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.BeginGetResponse();
Fiddler显示第一个~80被同时发送到服务器,然后在任何初始响应返回之前,Fiddler显示剩下的~120个请求以大约1 /秒的速度添加。
根据here的建议,有效限制从大约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左右。