转:多线程环境下调用 HttpWebRequest 并发连接限制
?
.net 的 HttpWebRequest 或者 WebClient 在多線程情況下存在并發(fā)連接限制,這個限制在桌面操作系統(tǒng)如 windows xp , windows? 7 下默認(rèn)是2,在服務(wù)器操作系統(tǒng)上默認(rèn)為10. 如果不修改這個并發(fā)連接限制,那么客戶端同時可以建立的 http 連接數(shù)就只有2個或10個。對于一些諸如瀏覽器或網(wǎng)絡(luò)蜘蛛的應(yīng)用,2個或10個并發(fā)數(shù)量實(shí)在太少,大大影響應(yīng)用的性能。之所以有這個并發(fā)連接限制,是因?yàn)?http 1.0 和 http 1.1 標(biāo)準(zhǔn)規(guī)定并發(fā)連接數(shù)最大為2. 不過目前主流的瀏覽器都已經(jīng)不遵循這個規(guī)則了,但 .net framework 依然默認(rèn)遵循這個規(guī)則。
很多文章說用異步方式訪問 HttpWebRequest 可以提高并發(fā)性能,但我測試下來,如果不修改這個默認(rèn)并發(fā)連接數(shù),同步或異步方式訪問性能都很不好。
調(diào)整這個默認(rèn)并發(fā)連接限制的方法很簡單
只要在程序中設(shè)置:
System.Net.ServicePointManager.DefaultConnectionLimit = 512;
這個值最好不要超過1024。
我們也可以在app.config 中對最大并發(fā)連接數(shù)進(jìn)行設(shè)置,方法如下:
<configuration> <system.net> <connectionManagement> <add address = "http://www.google.com" maxconnection = "512" /> <add address = "*" maxconnection = "512" /> </connectionManagement> </system.net> </configuration>修改了這個設(shè)置后,并發(fā)性能明顯提高,從原來每秒鐘20次直接上升到每秒鐘1000多次。
?
-----------------------------
天王蓋地虎小說網(wǎng):http://www.twgdh.com/
?
轉(zhuǎn)載于:https://www.cnblogs.com/haowuji/p/7422879.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的转:多线程环境下调用 HttpWebRequest 并发连接限制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 养老保险可以在手机上缴费吗
- 下一篇: 玖富万卡的保费怎么退回来