Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 16497|Отговор: 5

[Източник] .NET/C# многонишкова конкурентност, използваща ямата на HttpWebRequest

[Копирай линк]
Публикувано на 2021-12-20 15:21:04 | | | |
При планиране на задачи задачата е да се симулира иницииране на HTTP заявка и да се установи, че когато има повече задачи, планирането на задачи изглежда като фалшива смърт.

Максималният стандартен брой заявени връзки на нормална Windows система е 2, а при сървърна операционна система по подразбиране е 10. Ако не промениш това ограничение на паралелната връзка,Тогава броят на http връзките, които клиентът може да направи едновременно, е само 2 или 10

System.Net.ServicePointManager.DefaultConnectionLimit Това е максималният брой връзки, които могат да получат текущата настройка по подразбиране, както е показано на фигурата по-долу:



Има ли стандартен лимит за конкурентност за HttpClient?

Преди .Net 4.0, HttpWebRequest разчиташе на HTTP операциите. По подразбиране има много консервативен максимум от 2 лимита за паралелност за един и същи сайт, което често кара HttpWebRequests да не достигне идеалната скорост по подразбиране (предполагам, че тази стратегия дразни много програмисти), а стойността на App.config или ServicePointManager.DefaultConnectionLimit трябва да бъде модифицирана.

MS въведе HttpClient клас в .Net 4.5 за обработка на Http операции, и мислех, че HttpClient и HttpWebRequest следват една и съща политика. Днес, когато пишех многонишкова програма за изтегляне, използвах 10 едновременни връзки и установих, че HttpClient по подразбиране няма ограничение за едновременен номер.

Първоначално си помислих, че е така. Net 4.5 премахна това ограничение за конкурентност (в крайна сметка, всъщност никой вече не следва този стандарт), след което пренаписа съответния код с WebRequest и установи, че все още е лимит от 2 конкурентности, а стойността на ServicePointManager.DefaultConnectionLimit също беше 2. Тоест, HttpClient не се контролира от политиката за конкурентност на HttpWebRequest и няма системно ограничение за конкурентност.

Освен това, по време на тестове установих, че HttpWebRequest по подразбиране не достига максимум 2 конкурентности за всички адреси. НапримерНяма ограничение за паралелност за локални HTTP адресни връзки (http://localhost/*).

C# многонишкови обаждания към HttpWebRequest ограничение на конкурентната връзка

HttpWebRequest или WebClient на .net има ограничение на едновременната връзка при многонишкови системи, което е 2 по подразбиране при настолни операционни системи като Windows XP и Windows 7, и 10 по подразбиране при сървърни операционни системи. Ако не промените това ограничение за едновременно свързване, броят на HTTP връзките, които клиентът може да направи наведнъж, е само 2 или 10. За някои приложения, като браузъри или паяци, броят от 2 или 10 паралелности е твърде малък и силно влияе на производителността на приложението. Това ограничение на паралелната връзка се дължи на стандартите HTTP 1.0 и HTTP 1.1, които изискват максимум 2 едновременни връзки. Въпреки това, масовите браузъри вече не спазват това правило, но .NET фреймуъркът по подразбиране го спазва.

Много статии казват, че асинхронният достъп до HttpWebRequest може да подобри едновременното представяне, но аз съм тествал, че ако не променяте стандартния брой на паралелните връзки, синхронната или асинхронната производителност на достъпа не е добра.

Можем също така да зададем максималния брой паралелни връзки в app.config по следния начин:

Референтна статия

Входът към хиперлинк е видим.
Входът към хиперлинк е видим.





Предишен:Xshell Xftp За да продължите да използвате тази програма, трябва да приложите най-новото...
Следващ:Командата Maven изпраща jar пакети от трети страни към частни хранилища на Nexus
Публикувано на 26.12.2021 17:20:57 |
Научи се да учиш。。。。。
Публикувано на 2022-1-10 08:42:47 |
Научи се да учиш。。。。。
Публикувано на 2022-3-8 15:58:54 |
Уча...
 Хазяин| Публикувано на 2023-2-18 21:47:09 |
Освен това решението

 Хазяин| Публикувано на 2023-3-10 21:21:15 |
Конфигурирайте чрез web.config

Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com