Pri razporejanju nalog je naloga razporejanja simulirati začetek HTTP zahteve in ugotoviti, da se razporejanje nalog zdi kot lažna smrt, ko je nalog več.
Največje privzeto število zahtevanih povezav na običajnem Windows sistemu je 2, na strežniškem operacijskem sistemu pa je privzeto 10. Če te omejitve sočasne povezave ne spremenite,Število http povezav, ki jih lahko odjemalec vzpostavi hkrati, je le 2 ali 10。
System.Net.ServicePointManager.DefaultConnectionLimit To je največje število povezav, ki lahko dosežejo trenutno privzeto nastavitev, kot je prikazano na spodnji sliki:
Ali obstaja privzeta omejitev sočasnosti za HttpClient?
Pred .Net 4.0 je Http operacije uporabljal HttpWebRequest. Privzeto ima zelo konservativno največ 2 omejitve sočasnosti za isto stran, kar pogosto povzroči, da HttpWebRequests privzeto ne doseže idealne hitrosti (verjetno ta strategija frustrira veliko programerjev), poleg tega pa je treba spremeniti vrednost App.config ali ServicePointManager.DefaultConnectionLimit.
MS je v .Net 4.5 uvedel razred HttpClient za upravljanje Http operacij, in mislil sem, da HttpClient in HttpWebRequest sledita isti politiki. Danes sem pri pisanju večnitnega programa za prenos uporabil 10 sočasnih povezav in ugotovil, da HttpClient privzeto nima omejitve sočasnega števila.
Sprva sem mislil, da je. Net 4.5 je odstranil to omejitev sočasnosti (navsezadnje danes tega standarda praktično nihče ne upošteva), nato pa je ustrezno kodo prepisal z WebRequest in ugotovil, da je še vedno omejitev 2 sočasnosti, vrednost ServicePointManager.DefaultConnectionLimit pa je prav tako 2. To pomeni, da HttpClient ni nadzorovan s politiko sočasnosti HttpWebRequest in ni omejitve sočasnosti na sistemski ravni.
Poleg tega sem med testiranjem ugotovil, da HttpWebRequest ne omogoča največ 2 sočasnosti za vse naslove. Na primerZa lokalne HTTP povezave ni omejitve sočasnosti (http://localhost/*).。
C# večnitni klici okolja na HttpWebRequest omejitev sočasne povezave
.netov HttpWebRequest ali WebClient ima omejitev sočasne povezave pri večnitnosti, ki je privzeto 2 na namiznih operacijskih sistemih, kot sta Windows XP in Windows 7, ter privzeto 10 na strežniških operacijskih sistemih. Če te omejitve sočasnih povezav ne spremenite, je število HTTP povezav, ki jih lahko odjemalec vzpostavi naenkrat, le 2 ali 10. Za nekatere aplikacije, kot so brskalniki ali pajki, je število 2 ali 10 sočasnosti premajhno in močno vpliva na zmogljivost aplikacije. Ta omejitev sočasne povezave je posledica standardov HTTP 1.0 in HTTP 1.1, ki določata največ 2 sočasni povezavi. Vendar pa glavni brskalniki tega pravila ne upoštevajo več, vendar .NET okvir še vedno privzeto sledi temu pravilu.
Veliko člankov pravi, da lahko asinhroni dostop do HttpWebRequest izboljša sočasno zmogljivost, vendar sem preizkusil, da če ne spremenite privzetega števila sočasnih povezav, sinhroni ali asinhroni dostop ni dober.
V app.config lahko nastavimo tudi največje število sočasnih povezav na naslednji način:
Referenčni članek
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
|