2014-10-20 262 views
-3

当运行一个C#程序在多线程环境中生成多个网络请求时,我发现Request.GetRequestStream非常慢,有时需要几秒钟,并且通常是后续GetResponse的两倍。即使Proxy已被设置为空,即“标准”修复。GetRequestStream非常慢

这是什么原因?

+0

当然,在大约20分钟的网页搜索中并没有出现这种情况。 – 2014-10-20 21:23:49

回答

0

原来,.NET, by default, has a default limit of 2 for simultaneous connections。这当然会严重扼杀任何显着多线程的应用程序,并且延迟将出现在GetRequestStream调用中。

“修复”是改变默认的限制会更合理搭配:

ServicePointManager.DefaultConnectionLimit = newConnectionLimit; 

我在VMware上运行的Windows摇摇晃晃的Mac似乎处理20 OK的价值,但有些护理应采取这个数字是一个很大的数字,可以让更多的资源被捆绑起来而不会增加性能。

+0

你确定回答那一个很快。 – Xela 2014-10-20 21:16:46

+0

我提交了一个问题/答案,使信息在SO上找到。上述“重复”在约20分钟的搜索中没有弹出。 – 2014-10-20 21:26:33