当运行在多线程环境中生成多个网络请求的C#程序时,我发现Request.GetRequestStream非常慢,有时需要几秒钟,通常是后续GetResponse的两倍。即使Proxy
已被设置为null,这是一个“标准”修复。
这是什么原因?
答案 0 :(得分:1)
事实证明.NET, by default, has a default limit of 2 for simultaneous connections。这当然会严重限制任何执行重要多线程的应用程序,并且延迟将出现在GetRequestStream调用上。
“修复”是将默认限制更改为更合理的:
ServicePointManager.DefaultConnectionLimit = newConnectionLimit;
我在VMWare上运行Windows的摇摇晃晃的Mac似乎处理了20 OK的值,但是应该谨慎对待这个数字,因为较大的数字将允许更多的资源被捆绑而没有增加的性能。