Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 16497|Atsakyti: 5

[Šaltinis] .NET/C# kelių gijų sutapimas naudojant HttpWebRequest duobę

[Kopijuoti nuorodą]
Publikuota: 2021-12-20 15:21:04 | | | |
Planuojant užduotis, planavimo užduotis yra imituoti HTTP užklausos inicijavimą ir nustatyti, kad kai yra daugiau užduočių, užduočių planavimas atrodo kaip netikra mirtis.

Didžiausias numatytasis prašomų ryšių skaičius įprastoje "Windows" sistemoje yra 2, o serverio operacinėje sistemoje - 10. Jei nepakeisite šio vienalaikio ryšio apribojimo,Tada http ryšių, kuriuos klientas gali užmegzti vienu metu, skaičius yra tik 2 arba 10

System.Net.ServicePointManager.DefaultConnectionLimit Tai maksimalus ryšių, galinčių gauti dabartinį numatytąjį parametrą, skaičius, kaip parodyta paveikslėlyje žemiau:



Ar yra numatytasis HttpClient sutapimo limitas?

Iki .Net 4.0 Http operacijomis rėmėsi HttpWebRequest. Pagal nutylėjimą ji turi labai konservatyvų maksimalų 2 lygiagrečių limitų tą pačią svetainę, dėl kurios dažnai HttpWebRequests negauna idealaus greičio pagal nutylėjimą (manau, kad ši strategija nuvilia daugelį programuotojų), o App.config arba ServicePointManager.DefaultConnectionLimit vertė turi būti pakeista.

MS pristatė HttpClient klasę .Net 4.5 tvarkyti Http operacijas, ir aš maniau, kad HttpClient ir HttpWebRequest sekė tą pačią politiką. Šiandien, rašydamas kelių gijų atsisiuntimo programą, naudojau 10 vienalaikių ryšių ir pastebėjau, kad "HttpClient" pagal numatytuosius nustatymus neturi lygiagrečių skaičių limito.

Iš pradžių maniau, kad taip. Net 4.5 pašalino šį sutapimo limitą (juk iš esmės niekas nesilaiko šio standarto dabar), o tada perrašė atitinkamą kodą su WebRequest ir nustatė, kad jis vis dar buvo 2 sutapimo limitas, o ServicePointManager.DefaultConnectionLimit vertė taip pat buvo 2. Tai reiškia, kad "HttpClient" nekontroliuoja "HttpWebRequest" sutapimo strategija ir nėra sistemos lygio sutapimo apribojimo.

Be to, bandymų metu pastebėjau, kad "HttpWebRequest" pagal numatytuosius nustatymus nenustato daugiausiai 2 visų adresų sutapimo. PavyzdžiuiVietinių HTTP adresų ryšiams (http://localhost/*) lygiagrečiai neribojama.

C# kelių gijų aplinkos iškvietimai į HttpWebRequest vienalaikio ryšio ribą

.net "HttpWebRequest" arba "WebClient" turi vienalaikio ryšio limitą kelių gijų atveju, kuris yra 2 pagal numatytuosius nustatymus darbalaukio operacinėse sistemose, tokiose kaip "Windows XP" ir "Windows 7", ir 10 pagal numatytuosius nustatymus serverių operacinėse sistemose. Jei nepakeisite šio vienalaikio ryšio apribojimo, HTTP ryšių, kuriuos klientas gali užmegzti vienu metu, skaičius bus tik 2 arba 10. Kai kurioms programoms, pvz., naršyklėms ar vorams, 2 arba 10 lygiagrečių skaičius yra per mažas ir labai veikia programos veikimą. Šis vienalaikio ryšio apribojimas yra dėl HTTP 1.0 ir HTTP 1.1 standartų, kurie nurodo ne daugiau kaip 2 vienu metu vykstančius ryšius. Tačiau pagrindinės naršyklės šios taisyklės nebelaiko, tačiau .NET sistema vis tiek laikosi šios taisyklės pagal numatytuosius nustatymus.

Daugelyje straipsnių sakoma, kad prieiga prie "HttpWebRequest" asinchroniškai gali pagerinti vienalaikį našumą, tačiau išbandžiau, kad jei nepakeisite numatytojo vienalaikių ryšių skaičiaus, sinchroninės ar asinchroninės prieigos našumas nėra geras.

Taip pat galime nustatyti maksimalų vienalaikių ryšių skaičių app.config taip:

Informacinis straipsnis

Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.





Ankstesnis:Xshell Xftp Norėdami toliau naudoti šią programą, turite taikyti naujausią...
Kitą:"Maven" komanda perkelia trečiųjų šalių jar paketus į privačias "Nexus" saugyklas
Publikuota: 2021-12-26 17:20:57 |
Išmokite mokytis。。。。。
Paskelbta 2022-1-10 08:42:47 |
Išmokite mokytis。。。。。
Publikuota: 2022-3-8 15:58:54 |
Mokytis...
 Savininkas| Paskelbta 2023-2-18 21:47:09 |
Be to, sprendimas

 Savininkas| Publikuota: 2023-3-10 21:21:15 |
Konfigūruoti per web.config

Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com