Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 16497|Odpowiedź: 5

[Źródło] .NET/C# wielowątkowa równobieżność z wykorzystaniem pit HttpWebRequest

[Skopiuj link]
Opublikowano 2021-12-20 15:21:04 | | | |
Podczas planowania zadań zadaniem jest symulacja inicjowania żądania HTTP i odkrycie, że gdy jest więcej zadań, harmonogramowanie zadań wydaje się być jak fałszywa śmierć.

Maksymalna domyślna liczba żądanych połączeń na zwykłym systemie Windows wynosi 2, a na systemie operacyjnym serwera domyślnie wynosi 10. Jeśli nie zmodyfikujesz tego limitu łącza współczesnego,Wtedy liczba połączeń http, które klient może nawiązać jednocześnie, wynosi tylko 2 lub 10

System.Net.ServicePointManager.DefaultConnectionLimit To maksymalna liczba połączeń, które mogą uzyskać aktualne domyślne ustawienie, jak pokazano na poniższym rysunku:



Czy istnieje domyślny limit współbieżności dla HttpClient?

Przed .Net 4.0 operacje Http były wykorzystywane przez HttpWebRequest. Domyślnie ma bardzo zachowawcze maksimum 2 limitów współbieżności dla tej samej strony, co często powoduje, że HttpWebRequests domyślnie nie osiąga idealnej prędkości (chyba ta strategia frustruje wielu programistów), a wartość App.config lub ServicePointManager.DefaultConnectionLimit musi być modyfikowana.

MS wprowadziło klasę HttpClient w .Net 4.5 do obsługi operacji Http, a ja myślałem, że HttpClient i HttpWebRequest stosują tę samą politykę. Dziś, pisząc program do pobierania wielowątkowo-wątkowo, użyłem 10 łączeń równocześnie i odkryłem, że HttpClient domyślnie nie ma limitu liczby współbieżnych połączeń.

Na początku myślałem, że tak. Net 4.5 usunął ten limit współbieżności (w końcu praktycznie nikt już nie stosuje tego standardu), a następnie przepisał odpowiedni kod za pomocą WebRequest i okazało się, że limit współbieżności nadal był 2, a wartość ServicePointManager.DefaultConnectionLimit również wynosiła 2. Oznacza to, że HttpClient nie jest kontrolowany przez politykę współbieżności HttpWebRequest i nie ma limitu współbiegu na poziomie systemowym.

Dodatkowo, podczas testów zauważyłem, że HttpWebRequest nie domyślnie stosuje maksymalnie 2 współbieżności dla wszystkich adresów. Na przykładNie ma limitu współbieżności dla lokalnych połączeń adresowych HTTP (http://localhost/*).

C# wielowątkowe wywołania środowiska do limitu łączeń współżytnych HttpWebRequest

HttpWebRequest lub WebClient w .net ma limit łączeń współcześnych w przypadku wielowątkowania, który domyślnie wynosi 2 na komputerach stacjonarnych, takich jak Windows XP i Windows 7, oraz 10 domyślnie na systemach serwerowych. Jeśli nie zmienisz tego limitu łączy współbieżnych, liczba połączeń HTTP, które klient może nawiązać jednocześnie, wynosi tylko 2 lub 10. W niektórych aplikacjach, takich jak przeglądarki czy pająki, liczba 2 lub 10 współbieżności jest zbyt mała i znacząco wpływa na wydajność aplikacji. Limit łączeń współczesnych wynika ze standardów HTTP 1.0 i HTTP 1.1, które określają maksymalnie 2 połączenia równoczesne. Jednak główne przeglądarki nie stosują już tej zasady, ale framework .NET nadal stosuje ją domyślnie.

Wiele artykułów mówi, że dostęp do HttpWebRequest asynchronicznie może poprawić wydajność równoczesną, ale testowałem, że jeśli nie zmienisz domyślnej liczby łączy równoczesnych, wydajność dostępu synchronicznego lub asynchronicznego nie jest dobra.

Możemy także ustawić maksymalną liczbę jednoczesnych połączeń w app.config w następujący sposób:

Artykuł referencyjny

Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.





Poprzedni:Xshell Xftp Aby kontynuować korzystanie z tego programu, musisz zastosować najnowszy...
Następny:Polecenie Maven przesyła pakiety jar firm trzecich do prywatnych repozytoriów Nexusa
Opublikowano 2021-12-26 17:20:57 |
Naucz się uczyć się。。。。。
Opublikowano 10.01.2022 08:42:47 |
Naucz się uczyć się。。。。。
Opublikowano 2022-3-8 15:58:54 |
Uczyć się...
 Ziemianin| Opublikowano 2023-2-18 21:47:09 |
Ponadto rozwiązanie

 Ziemianin| Opublikowano 2023-3-10 21:21:15 |
Konfiguruj przez web.config

Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com