[问题] httpwebrequest请求逾时

楼主: unstoppable (BEN)   2015-08-22 05:49:32
目前的专案是需要对多个网站抓数据下来
有将httpwebrequest包成一个方法,并使用多线程去跑
方法最后有将request abort以及response close还有设定为null
方法最前有GC.Collect();
request的keep-alive设定为false
ServicePointManager.DefaultConnectionLimit设定为512
十多个网站中,有两个常会出现逾时,其他网站不会
软件单独对这两个网站取数据不会出现
同时对十多个网站抓取数据才会发生
每个网站各自的抓取间隔皆为2秒
原本想说是不是网站本身问题,但是不全部一起抓就不会发生逾时
想请问板上前辈,还有什么问题是可能造成这样的状况发生?
感谢
作者: fo40225   2015-08-22 08:24:00
有完整的程式码吗? 这样比较好找问题然后 不要呼叫GC.Collect() 你呼叫这个 他要把所有的线程挂起 很伤效能也不要把物件设为null 这样会让物件被GC的时间延后.net的最佳内存管理方式就是有IDisposable时用using然后其他的不要管 把物件设为null在C++才是呼叫解构子C#中没有意义如果你是.net4.5以上 你可以试试用HttpClient
作者: fatrabitree (胖兔子)   2015-08-22 15:24:00
C++设为null也没有呼叫解构子就是...
作者: fo40225   2015-08-22 21:08:00
那就是我误解了 抱歉误导了backgroundworker是设计拿来CPU-bound 别拿来IO试试 (HttpWebResponse)await req.GetResponseAsync();有没有可能是频宽吃紧 导致60秒载不完?不然就是线程太多 来不及反应

Links booklink

Contact Us: admin [ a t ] ucptt.com