Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 16497|Vastaus: 5

[Lähde] .NET/C# monisäikeinen rinnakkaistus HttpWebRequestin pitillä

[Kopioi linkki]
Julkaistu 2021-12-20 klo 15:21:04 | | | |
Tehtävien ajoituksessa ajoituksen tehtävänä on simuloida HTTP-pyynnön käynnistämistä, ja huomata, että kun tehtäviä on enemmän, tehtävien aikataulutus tuntuu kuin feikkikuolemalta.

Normaalissa Windows-järjestelmässä pyydettyjen yhteyksien enimmäisoletusmäärä on 2, ja palvelinkäyttöjärjestelmässä oletuksena 10. Jos et muokkaa tätä samanaikaista yhteysrajaa,Silloin asiakas voi tehdä samanaikaisesti vain 2 tai 10 http-yhteyksiä

System.Net.ServicePointManager.DefaultConnectionLimit Tämä on enimmäismäärä yhteyksiä, jotka voivat saada nykyisen oletusasetuksen, kuten alla olevassa kuvassa on esitetty:



Onko HttpClientille oletusrajaa samanaikaisuudesta?

Ennen .Net 4.0:aa Http-toiminnot perustuivat HttpWebRequestiin. Samalla sivustolla on oletuksena hyvin konservatiivinen enimmäisrajoitus kahteen samanaikaisuuteen, mikä usein aiheuttaa sen, että HttpWebRequests ei saavuta ihanteellista nopeutta oletuksena (tämä strategia kai turhauttaa monia koodareita), ja App.config- tai ServicePointManager.DefaultConnectionLimit-arvoa täytyy muuttaa.

MS esitteli HttpClient-luokan .Net 4.5:een Http-toimintojen hallintaan, ja ajattelin, että HttpClient ja HttpWebRequest noudattivat samaa käytäntöä. Tänään, kun kirjoitin monisäikeistä latausohjelmaa, käytin 10 samanaikaista yhteyttä ja huomasin, että HttpClientissä ei ole oletuksena samanaikaista lukumäärää.

Aluksi luulin niin. Net 4.5 poisti tämän samanaikaisuusrajoituksen (loppujen lopuksi kukaan ei noudata tätä standardia enää), ja kirjoitti sitten relevantin koodin uudelleen WebRequestilla, ja havaitsi, että kyseessä oli edelleen 2 samanaikaisuusraja, ja ServicePointManager.DefaultConnectionLimit -arvo oli myös 2. Toisin sanoen HttpClientia ei ohjaa HttpWebRequestin rinnakkaiskäytännöt, eikä järjestelmätason samanaikaisuusrajoitusta ole.

Lisäksi testauksen aikana huomasin, että HttpWebRequest ei oletuksena ole enintään 2 samanaikaisuutta kaikille osoitteille. EsimerkiksiPaikallisille HTTP-osoiteyhteyksille (http://localhost/*) ei ole samanaikaisuusrajaa.

C# monisäikeinen ympäristökutsu HttpWebRequestin samanaikaiseen yhteysrajoitukseen

.netin HttpWebRequest- tai WebClient-sovelluksella on samanaikainen yhteysrajoitus monisäikeisyyden tapauksessa, joka on oletuksena 2 käyttöjärjestelmässä kuten Windows XP:ssä ja Windows 7:ssä sekä 10 oletuksena palvelinkäyttöjärjestelmissä. Jos et muuta tätä samanaikaista yhteysrajaa, asiakas voi tehdä HTTP-yhteyksiä kerrallaan vain 2 tai 10. Joillakin sovelluksilla, kuten selaimilla tai hämähäkkeillä, samanaikaisuuden määrä 2 tai 10 on liian pieni ja vaikuttaa merkittävästi sovelluksen suorituskykyyn. Tämä samanaikainen yhteysrajoitus johtuu HTTP 1.0- ja HTTP 1.1 -standardeista, jotka määrittelevät enintään 2 samanaikaista yhteyttä. Kuitenkin valtavirran selaimet eivät enää noudata tätä sääntöä, mutta .NET-kehys noudattaa tätä sääntöä oletuksena.

Monissa artikkeleissa sanotaan, että HttpWebRequestin asynkroninen käyttö voi parantaa samanaikaista suorituskykyä, mutta olen testannut, että jos et muuta oletuslukumäärää samanaikaisissa yhteyksissä, synkroninen tai asynkroninen pääsysuorituskyky ei ole hyvä.

Voimme myös asettaa app.configissa samanaikaisten yhteyksien maksimimäärän seuraavasti:

Viiteartikkeli

Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.





Edellinen:Xshell Xftp Jatkaaksesi tämän ohjelman käyttöä sinun täytyy soveltaa uusin...
Seuraava:Maven-komento työntää kolmannen osapuolen jar-paketit Nexusin yksityisiin repositorioihin
Julkaistu 2021-12-26 klo 17:20:57 |
Opettele oppimaan。。。。。
Julkaistu 2022-1-10 08:42:47 |
Opettele oppimaan。。。。。
Julkaistu 2022-3-8 klo 15:58:54 |
Oppia...
 Vuokraisäntä| Julkaistu 2023-2-18 21:47:09 |
Lisäksi ratkaisu

 Vuokraisäntä| Julkaistu 2023-3-10 21:21:15 |
Konfigurointi web.configin kautta

Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com