【发布时间】:2014-10-20 21:15:22
【问题描述】:
在多线程环境下运行生成多个网络请求的 C# 程序时,我发现 Request.GetRequestStream 很慢,有时需要几秒钟,通常是后续 GetResponse 的两倍。即使 Proxy 已设置为 null,这是一个“标准”修复。
这是什么原因?
【问题讨论】:
-
当然,在大约 20 分钟的网络搜索中,骗子没有出现。
标签: c# .net networking
在多线程环境下运行生成多个网络请求的 C# 程序时,我发现 Request.GetRequestStream 很慢,有时需要几秒钟,通常是后续 GetResponse 的两倍。即使 Proxy 已设置为 null,这是一个“标准”修复。
这是什么原因?
【问题讨论】:
标签: c# .net networking
原来是.NET, by default, has a default limit of 2 for simultaneous connections。这当然会严重限制任何执行大量多线程的应用程序,并且延迟将出现在 GetRequestStream 调用中。
“修复”是将默认限制更改为更合理的值:
ServicePointManager.DefaultConnectionLimit = newConnectionLimit;
我在 VMWare 上运行 Windows 的摇摇晃晃的 Mac 似乎可以处理 20 OK 的值,但应该注意这个数字,因为较大的数字会占用更多资源而不会增加性能。
【讨论】: