C#MultiThreaded HttpWebRequest超时..帮助!

时间:2009-06-05 22:27:01

标签: c# multithreading httpwebrequest

我在C#中实现了一个多线程爬虫。 使用自定义线程池,有一个作业队列,所有要下载的页面都排队,每个线程占用一个并下载。

使用15个线程, 当仅爬行一个站点时,它像丝绸一样光滑并且快速完成。 在同时抓取多个站点在不同服务器上时,我会收到很多超时。

这可能与DNS解析有关吗? 您认为会导致这种情况发生什么?

感谢。 Roey

2 个答案:

答案 0 :(得分:2)

据推测,您在Windows上运行此功能。虽然您可能正在配置HttpWebRequest允许的连接数,但这并不会更改Windows强加的限制。例如,我的理解是,在XP SP2中,Microsoft强加了每秒10个连接的限制。如果您有大量积压的连接等待允许打开,由于未及时授予权限,它们可能会遇到超时。

不可否认,由于我从未遇到过这个问题,因此我对这个问题没有太多的了解。尝试限制您尝试进行的连接数量,看看是否可以减少超时。

答案 1 :(得分:1)

here所述,HttpWebRequest存在连接限制。请参阅MSDN中的HttpWebRequest.ServicePoint.ConnectionLimit