多線程環境下調用 HttpWebRequest 並發連接限制


.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多次。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM