我正在编写一个应用程序来测量我可以使用C#下载网页的速度有多快。我提供了一个唯一的域名列表,然后我产生了X个线程并执行HTTPWebRequests,直到域列表已被使用。问题是不管我使用多少个线程,我只能得到每秒大约3页。HttpWebRequest并发限制
我发现System.Net.ServicePointManager.DefaultConnectionLimit是2,但我的印象是这与每个域的连接数有关。由于列表中的每个域都是唯一的,所以这不应该成为问题。
然后我发现GetResponse()方法阻止从所有其他进程的访问,直到WebResponse被关闭:http://www.codeproject.com/KB/IP/Crawler.aspx#WebRequest,我还没有在网上找到任何其他信息来支持这个声明,但是我实现了一个HTTP请求插座,我注意到显着的加速(4倍到6倍)。
所以我的问题:有人确切知道HttpWebRequest对象是如何工作的吗?除上述内容外,还有解决方法吗?或者是否有用C#编写的高速网页爬虫的任何示例?
您可以配置每个域的连接限制,但默认连接限制是全局的。 https://msdn.microsoft.com/en-us/library/fb6y0fyc.aspx – Todd 2016-12-05 01:37:45