Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 16497|Відповідь: 5

[Джерело] .NET/C# багатопотокова паралельність із використанням pit HttpWebRequest

[Копіювати посилання]
Опубліковано 2021-12-20 15:21:04 | | | |
При плануванні завдань завдання полягає в тому, щоб імітувати ініціацію HTTP-запиту, і коли завдань більше, планування здається як фальшива смерть.

Максимальна кількість запитуваних з'єднань за замовчуванням на звичайній Windows — 2, а на серверній операційній системі — 10. Якщо ви не зміните це обмеження на паралельне з'єднання,Тоді кількість http-з'єднань, які клієнт може здійснити одночасно, становить лише 2 або 10

System.Net.ServicePointManager.DefaultConnectionLimit Це максимальна кількість з'єднань, які можуть отримати поточне налаштування за замовчуванням, як показано на рисунку нижче:



Чи існує стандартний ліміт на конкурентність для HttpClient?

До виходу .Net 4.0 Http-операції використовувалися HttpWebRequest. За замовчуванням існує дуже консервативний максимум 2 обмеження на паралелізм для одного й того ж сайту, через що HttpWebRequests за замовчуванням не досягають ідеальної швидкості (гадаю, ця стратегія дратує багатьох програмістів), і значення App.config або ServicePointManager.DefaultConnectionLimit потрібно змінювати.

MS запровадила клас HttpClient у .Net 4.5 для обробки HTTP-операцій, і я думав, що HttpClient і HttpWebRequest дотримуються однакової політики. Сьогодні, коли я писав багатопотокову програму для завантаження, я використав 10 одночасних з'єднань і виявив, що HttpClient за замовчуванням не має обмеження на кількість учасників.

Спочатку я думав, що так. Net 4.5 скасував це обмеження на паралелізм (адже фактично ніхто зараз не дотримується цього стандарту), а потім переписав відповідний код за допомогою WebRequest і виявив, що це все ще обмеження на 2 рівні, а значення ServicePointManager.DefaultConnectionLimit також дорівнює 2. Тобто HttpClient не контролюється політикою конкурентності HttpWebRequest, і немає системного обмеження на конкурентність.

Крім того, під час тестування я з'ясував, що HttpWebRequest за замовчуванням не дає максимум 2 паралелності для всіх адрес. НаприкладДля локальних HTTP-адресних з'єднань (http://localhost/*) немає обмеження на паралельність.

Багатопотокові виклики середовища C# до обмеження паралельного з'єднання HttpWebRequest

HttpWebRequest або WebClient у .net має обмеження паралельного з'єднання у випадку багатопотокності, яке за замовчуванням становить 2 на настільних операційних системах, таких як Windows XP і Windows 7, і 10 за замовчуванням на серверних операційних системах. Якщо не змінити це обмеження на паралельне з'єднання, кількість HTTP-з'єднань, які клієнт може здійснити одночасно, становить лише 2 або 10. Для деяких застосувань, таких як браузери чи павуки, кількість 2 або 10 паралелістів є надто малою і суттєво впливає на продуктивність застосунку. Це обмеження одночасного з'єднання зумовлене стандартами HTTP 1.0 та HTTP 1.1, які визначають максимум 2 одночасні з'єднання. Однак масові браузери більше не дотримуються цього правила, але .NET-фреймворк за замовчуванням дотримується його.

Багато статей стверджують, що асинхронний доступ до HttpWebRequest може покращити паралельну роботу, але я перевіряв, що якщо не змінювати стандартну кількість паралельних з'єднань, продуктивність синхронного або асинхронного доступу є поганою.

Ми також можемо встановити максимальну кількість паралельних з'єднань у app.config наступним чином:

Довідкова стаття

Вхід за гіперпосиланням видно.
Вхід за гіперпосиланням видно.





Попередній:Xshell Xftp Щоб продовжувати користуватися цією програмою, потрібно застосувати найновіші...
Наступний:Команда Maven відправляє jar-пакети третьої сторони до приватних репозиторіїв Nexus
Опубліковано 2021-12-26 17:20:57 |
Навчися вчитися。。。。。
Опубліковано 2022-1-10 08:42:47 |
Навчися вчитися。。。。。
Опубліковано 2022-3-8 15:58:54 |
Дізнатися...
 Орендодавець| Опубліковано 2023-2-18 21:47:09 |
Крім того, рішення

 Орендодавець| Опубліковано 2023-3-10 21:21:15 |
Налаштуйте через web.config

Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com