標籤:rpc net get 串連數 conf sof max 網路 情況
.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多次。
C#多線程環境下調用 HttpWebRequest 並發串連限制