.net 的 HttpWebRequest 或者 WebClient 在多線程情況下存在並發連接限制,這個限制在桌面操作系統如 windows xp , windows 7 下默認是2,在服務器操作系統上默認為10. 如果不修改這個並發連接限制,那么客戶端同時可以建立的 http 連接數就只有2個或10個。對於一些諸如瀏覽器或網絡蜘蛛的應用,2個或10個並發數量實在太少,大大影響應用的性能。之所以有這個並發連接限制,是因為 http 1.0 和 http 1.1 標准規定並發連接數最大為2. 不過目前主流的瀏覽器都已經不遵循這個規則了,但 .net framework 依然默認遵循這個規則。
很多文章說用異步方式訪問 HttpWebRequest 可以提高並發性能,但我測試下來,如果不修改這個默認並發連接數,同步或異步方式訪問性能都很不好。
調整這個默認並發連接限制的方法很簡單
只要在程序中設置:
System.Net.ServicePointManager.DefaultConnectionLimit = 512;
這個值最好不要超過1024。
我們也可以在app.config 中對最大並發連接數進行設置,方法如下:
<configuration> <system.net> <connectionManagement> <add address = "http://www.google.com" maxconnection = "512" /> <add address = "*" maxconnection = "512" /> </connectionManagement> </system.net> </configuration>
修改了這個設置后,並發性能明顯提高,從原來每秒鍾20次直接上升到每秒鍾1000多次。