Når man gjør oppgaveplanlegging, er oppgaven å simulere å initiere en HTTP-forespørsel, og oppdage at når det er flere oppgaver, virker oppgaveplanleggingen som en falsk død.
Det maksimale standardantallet forespurte tilkoblinger på et normalt Windows-system er 2, og på et serveroperativsystem er det standard 10. Hvis du ikke endrer denne samtidige tilkoblingsgrensen,Da er antallet http-tilkoblinger klienten kan lage samtidig bare 2 eller 10。
System.Net.ServicePointManager.DefaultConnectionLimit Dette er det maksimale antallet tilkoblinger som kan få den nåværende standardinnstillingen, som vist i figuren nedenfor:
Finnes det en standard grense for samtidighet for HttpClient?
Før .Net 4.0 ble HTTP-operasjoner brukt av HttpWebRequest. Den har som standard en svært konservativ maksgrense på 2 samtidighetsgrenser for samme nettsted, noe som ofte gjør at HttpWebRequests ikke får ideell hastighet som standard (jeg antar denne strategien frustrerer mange kodere), og verdien av App.config eller ServicePointManager.DefaultConnectionLimit må endres.
MS introduserte en HttpClient-klasse i .Net 4.5 for å håndtere HTTP-operasjoner, og jeg trodde HttpClient og HttpWebRequest fulgte samme policy. I dag, da jeg skrev et flertrådet nedlastingsprogram, brukte jeg 10 samtidige tilkoblinger og fant ut at HttpClient ikke har noen grense for samtidige numre som standard.
Først trodde jeg det. Net 4.5 fjernet denne samtidighetsgrensen (tross alt følger egentlig ingen denne standarden nå), og skrev deretter om den relevante koden med WebRequest, og fant ut at det fortsatt var 2 samtidighetsgrense, og verdien av ServicePointManager.DefaultConnectionLimit var også 2. Det vil si at HttpClient ikke styres av HttpWebRequest-samtidighetspolicyen, og det finnes ingen systemnivågrense for samtidighet.
I tillegg fant jeg under testing at HttpWebRequest ikke automatisk har maksimalt 2 samtidighet for alle adresser. For eksempelDet finnes ingen samtidighetsgrense for lokale HTTP-adresseforbindelser (http://localhost/*).。
C# flertrådede miljøkall til HttpWebRequest samtidig tilkoblingsgrense
.nets HttpWebRequest eller WebClient har en samtidig tilkoblingsgrense i tilfelle multitråding, som er 2 som standard på skrivebordsoperativsystemer som Windows XP og Windows 7, og 10 som standard på serveroperativsystemer. Hvis du ikke endrer denne samtidige tilkoblingsgrensen, er antallet HTTP-tilkoblinger en klient kan lage samtidig bare 2 eller 10. For noen applikasjoner, som nettlesere eller edderderkopper, er antallet 2 eller 10 samtidighet for lite og påvirker ytelsen til applikasjonen betydelig. Denne samtidige tilkoblingsgrensen skyldes HTTP 1.0- og HTTP 1.1-standardene som spesifiserer maksimalt 2 samtidige tilkoblinger. Imidlertid følger ikke vanlige nettlesere lenger denne regelen, men .NET-rammeverket følger fortsatt denne regelen som standard.
Mange artikler sier at asynkron tilgang til HttpWebRequest kan forbedre samtidig ytelse, men jeg har testet at hvis du ikke endrer standardantallet samtidige tilkoblinger, er ikke synkron eller asynkron tilgangsytelse god.
Vi kan også sette maksimalt antall samtidige tilkoblinger i app.config som følger:
Referanseartikkel
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
|