在.NET 4.5中,使用WebClient,HttpWebRequest和HttpClient類可以發送多少個併發/並行請求是否有限制?或者,如果對Web API或服務器沒有限制,您是否可以發送無限的並行請求? 對不起,如果問題太廣泛,請糾正我,以便我縮小範圍。WebClient,HttpWebRequest和HttpClient的最大併發請求數
4
A
回答
14
是的,有一個限制。默認連接限制是每個遠程主機2個併發連接。這可以被覆蓋。例如,我相信ASP.NET在默認情況下將覆蓋默認值爲每個遠程主機10個連接。
從https://msdn.microsoft.com/en-us/library/7af54za5.aspx:
客戶端和服務器之間的連接數可以對應用程序吞吐量 巨大的影響。默認情況下,使用HttpWebRequest類的應用程序 最多使用兩個持續連接到給定服務器的 連接,但您可以基於每個應用程序設置最大連接數 。
要自己更改連接限制,請使用ServicePointManager.DefaultConnectionLimit
。在開始進行與遠程主機的HTTP連接之前,請確保在進程啓動後儘快進行此更改。這是因爲,一旦實際建立到遠程主機的HTTP連接,將使用當前的默認連接限制爲該遠程主機創建一個ServicePoint
。
請注意,除了HTTP客戶端類實施的併發連接外,還有其他有效的限制。例如,如果你想打開一百萬個併發連接,你可能會用盡內存,線程或其他操作系統資源。如果你遇到了這些限制,那麼你需要提出另一個更普遍的問題,關於如何擴展.net進程來處理大量併發I/O。但是,如果你只打開幾十個連接,那麼你應該沒問題。
順便說一句,如果你很好奇爲什麼默認限制如此之低,它實際上已經被納入HTTP規範 - 目標是確保自私的HTTP客戶端不會同時連接HTTP服務器。雖然現代瀏覽器忽略規範。請參閱http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/瞭解更多關於此主題的細節,而不是您想知道的!
相關問題
- 1. 用C#HttpWebRequest或WebClient發送HTTP請求?
- 2. Owin中的最大併發請求數
- 3. 使用httpClient和cert.em發送https請求
- 4. HTTPClient不發送HttpPost請求
- 5. 無法發出HttpClient請求
- 6. 對MarkLogic REST服務的併發請求的最大數量
- 7. 異步/等待併發http請求的最大數量
- 8. http-kit客戶端中的最大併發http請求數?
- 9. Apache HTTPClient HEAD請求的最高性能?
- 10. Xamarin HttpClient請求
- 11. HttpClient PostAsJsonAsync請求
- 12. 如何向HttpClient發送發佈請求
- 13. C#JSON WebClient請求引發ex
- 14. HttpWebRequest - 請求終止
- 15. HttpWebRequest或Webclient更快
- 16. HttpClient vs HttpWebRequest
- 17. 有WebClient GET請求的System.Security.SecurityException
- 18. 413請求實體對於HttpClient太大
- 19. ASP.Net httpwebrequest沒有發帖請求身體
- 20. 發送XML與POST請求httpwebrequest
- 21. Zend_Session_SaveHandler_DbTable和併發請求
- 22. 併發PHP和MySQL請求
- 23. C#HttpClient POST請求
- 24. HttpClient POST請求https:
- 25. 授權HttpClient請求
- 26. 最大。請求Twitter
- 27. 如何發送Ajax請求,使用HttpClient
- 28. 並非所有使用cookiecontainer和webclient/httpwebrequest保存的Cookie
- 29. 的併發請求
- 30. 使用HttpClient和AsyncHttpClient的Android HTTP請求
我們如何在.net內核中配置它? 'ServicePointManager'不再是一件事情 –
.NET Core 2.0現在具有ServicePointManager,您也可以直接將它設置爲HttpClient。看到我的答案在這裏:https://stackoverflow.com/questions/1361771/max-number-of-concurrent-httpwebrequests/46905342#46905342 – cbp