多线程并发访问网页
最近在弄Manager 4.1的时候遇到过这样子的问题,几百个线程一起访问网页,非常容易导致失败,一开始以为是服务器问题,但服务器内存占用和CPU使用率都不是特别的高,正常得很。
谷歌了下,找到个暂时能解决的方法。
系统默认的timeout是100秒,在实际当中用户不可能等100秒,所以改成10秒(这个是我的一贯做法,你们可以看实际需要改动)
将http的request的keepAlive设置为false,这个对于访问一次的网页最好设置成False,没必要让他保持连接。
System.Net.ServicePointManager.DefaultConnectionLimit = 50;
将软件默认的连接数改成50或者更大。
这时应该可以解决大部分人遇到的问题。
要注意的是每次访问网页完了以后,要把GetRequestStream或者GetResponse都Close下,做好资源释放。
在我找到的解决方法里提到用垃圾回收器来做资源释放
并发数很大的时候,每次访问网页都执行下回收,那会提高CPU占用率,而且不是每次回收都有用,反而增加负担。