我有一个应用程序,蜘蛛网站的信息。看起来像创建HttpWebRequests 20-45分钟后,他们一堆返回超时。我们所做的一件事就是附上一个匿名函数BindIPDelegate
,为这个请求提供一个特定的IP,因为我们循环了大约150个IP。做了HttpWebRequests一段时间后,结果开始超时
我设置了以下设置HttpWebRequest
对象..
- 设置的User-Agent
- 设置保持活动为false,这样不会重复使用的IP
- 设置超时到60000(60秒)
- 设置ReadWriteTimeout到60000(60秒)
- 设置代理为null
- Setti NG接受以/
- 设置的CookieContainer新的CookieContainer
- 设置Piplined为true
- 设置自动减压放气& GZIP
该应用程序是使用.NET 4.0和Windows Server 2008上运行R2。
这绝对看起来像应用程序/ TCP/.NET相关,因为如果我重新启动应用程序它再次运行良好。此外,它似乎或多或少像那些超时排队等待本地端口或其他东西。
任何想法?
你在做异步回叫或等待电话吗? – WeNeedAnswers 2010-10-19 22:53:00
同步,阻止呼叫。 – 2010-10-20 21:09:02
尝试异步回叫。可能无法解决您的问题,但他们确实在使用httpWebRequest时理清了线程的头痛问题。我会说它与线程池有关,但没有看你的代码,我不能肯定地说。永远不会伤害异步回调,而不是启动线程。你使用线程池? – WeNeedAnswers 2010-10-21 00:22:00