|
|
Veröffentlicht am 20.12.2021, 15:21:04
|
|
|
|

Beim Task-Scheduling besteht die Aufgabe darin, das Initiieren einer HTTP-Anfrage zu simulieren und festzustellen, dass bei mehr Aufgaben die Task-Scheduling wie ein Fake Death wirkt.
Die maximale Standardanzahl der angeforderten Verbindungen auf einem normalen Windows-System beträgt 2, und auf einem Server-Betriebssystem liegt sie standardmäßig auf 10. Wenn du diese gleichzeitige Verbindungsgrenze nicht änderst,Dann beträgt die Anzahl der HTTP-Verbindungen, die der Client gleichzeitig herstellen kann, nur 2 oder 10。
System.Net.ServicePointManager.DefaultConnectionLimit Dies ist die maximale Anzahl von Verbindungen, die die aktuelle Standardeinstellung erhalten können, wie in der untenstehenden Abbildung gezeigt:
Gibt es ein Standard-Nebenlaufzeitenlimit für HttpClient?
Vor .Net 4.0 basierte HttpWebRequest auf HTTP-Operationen. Standardmäßig gibt es ein sehr konservatives Maximum von 2 Nebenläufigkeitsgrenzen für dieselbe Seite, was oft dazu führt, dass HttpWebRequests standardmäßig nicht die ideale Geschwindigkeit erreichen (ich schätze, diese Strategie frustriert viele Programmierer), und der Wert von App.config oder ServicePointManager.DefaultConnectionLimit muss geändert werden.
Microsoft hat eine HttpClient-Klasse in .Net 4.5 eingeführt, um HTTP-Operationen zu handhaben, und ich dachte, HttpClient und HttpWebRequest folgen derselben Richtlinie. Heute, beim Schreiben eines Multithreaded-Downloadprogramms, habe ich 10 gleichzeitige Verbindungen verwendet und festgestellt, dass HttpClient standardmäßig kein Limit für gleichzeitige Nummern hat.
Zuerst dachte ich, es wäre so. Net 4.5 entfernte dieses Nebenläufigkeitslimit (schließlich folgt im Grunde niemand mehr diesem Standard), schrieb dann den entsprechenden Code mit WebRequest neu und stellte fest, dass es immer noch 2 Nebenläufigkeitsgrenze war und der Wert von ServicePointManager.DefaultConnectionLimit ebenfalls 2 betrug. Das heißt, HttpClient wird nicht von der Nebenläufigkeitsrichtlinie von HttpWebRequest kontrolliert, und es gibt kein Systemebene-Nebenläufigkeitslimit.
Außerdem habe ich bei Tests festgestellt, dass HttpWebRequest nicht standardmäßig maximal 2 Nebenwahlen für alle Adressen hat. Zum BeispielEs gibt keine Nebenläufigkeitsbegrenzung für lokale HTTP-Adressverbindungen (http://localhost/*).。
C#-Multithreaded-Umgebungsaufrufe an HttpWebRequest gleichzeitige Verbindungsgrenze
.nets HttpWebRequest oder WebClient hat im Falle von Multithreading eine gleichzeitige Verbindungsgrenze, die standardmäßig auf Desktop-Betriebssystemen wie Windows XP und Windows 7 bei 2 liegt und standardmäßig auf Server-Betriebssystemen 10. Wenn du diese gleichzeitige Verbindungsgrenze nicht änderst, beträgt die Anzahl der HTTP-Verbindungen, die ein Client gleichzeitig herstellen kann, nur 2 oder 10. Für einige Anwendungen, wie Browser oder Spiders, ist die Anzahl von 2 oder 10 Nebenwahl zu gering und beeinflusst die Leistung der Anwendung erheblich. Diese Grenze für gleichzeitige Verbindungen ist auf die HTTP 1.0- und HTTP 1.1-Standards zurückzuführen, die maximal zwei gleichzeitige Verbindungen vorschreiben. Allerdings folgen Mainstream-Browser dieser Regel nicht mehr, aber das .NET-Framework folgt dieser Regel weiterhin standardmäßig.
Viele Artikel sagen, dass der asynchrone Zugriff auf HttpWebRequest die gleichzeitige Leistung verbessern kann, aber ich habe getestet, dass die synchrone oder asynchrone Zugriffsleistung nicht gut ist, wenn man die Standardanzahl der gleichzeitigen Verbindungen nicht ändert.
Wir können auch die maximale Anzahl gleichzeitiger Verbindungen in app.config wie folgt festlegen:
Referenzartikel
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
|
Vorhergehend:Xshell Xftp Um dieses Programm weiterhin zu nutzen, musst du das neueste ...Nächster:Der Maven-Befehl pusht JARK-Pakete von Drittanbietern in private Nexus-Repositories
|