C#多線程環境下調用 HttpWebRequest 並發串連限制

來源:互聯網
上載者:User

標籤: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 並發串連限制

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.