架构师_程序员_码农网

Имя пользователя Получить пароль
Регистрация

QQ登录

Всего один шаг, чтобы начать

Поиск
Просмотров:7657|Ответов: 5
打印 上一主题 下一主题

[NET/C# Многопоточное одновременное использование подач HttpWebRequest

[Копировать ссылку].
Поднимайте прямо к 跳转到指定楼层
владелец
发表于 2021-12-20 15:21:04|只看该作者回帖奖励|Реверсивныйпросмотр|Режим чтения
Я занимаюсь планированием задач, чтобы имитировать инициирование HTTP-запроса, и обнаружил, что когда задач становится больше, планирование задач, похоже, умирает псевдосмертью.

Максимальное количество запрашиваемых соединений в обычной системе Windows равно 2, а в серверной операционной системе - 10. Если этот лимит одновременных соединений не изменен, то количество одновременных http-соединений, которые может сделать клиент, составляет всего 2 или 10.

System.Net.ServicePointManager.DefaultConnectionLimit Это позволяет получить текущее максимальное количество соединений, установленное по умолчанию, как показано ниже:



Есть ли у HttpClient ограничение параллелизма по умолчанию?

До .Net 4.0 он полагался на HttpWebRequest для Http-операций. По умолчанию он устанавливает очень консервативный максимальный лимит в 2 параллелизма на одном сайте, в результате чего при использовании HttpWebRequest по умолчанию часто не удается добиться желаемой скорости (по оценкам, эта стратегия угнетает многих кодеров), необходимо изменить в App.config или ServicePointManager. значение.

MS в .Net 4.5 ввела класс HttpClient специально для работы с 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 для серверных операционных систем. Если вы не измените это ограничение, то количество одновременных соединений, которые может выполнить клиент, составит всего 2 или 10. Если не изменять это ограничение, то количество http-соединений, которые клиент может установить одновременно, составит всего 2 или 10. Для таких приложений, как браузеры или веб-пауки, 2 или 10 одновременных соединений - это слишком мало, и они сильно влияют на производительность приложения. Причина такого ограничения на количество одновременных соединений заключается в том, что стандарты http 1.0 и http 1.1 определяют максимальное количество одновременных соединений в 2. Однако основные браузеры больше не следуют этому правилу, но .net framework все еще придерживается этого правила по умолчанию.

Во многих статьях говорится, что асинхронный доступ к HttpWebRequest может улучшить производительность параллелизма, но по моим тестам, если не менять установленное по умолчанию количество одновременных соединений, то и синхронный, и асинхронный доступ работают плохо.

Мы также можем установить максимальное количество одновременных соединений в app.config следующим образом:

Обратитесь к статье

h ttps:// blog.csdn.net/defender_/article/details/91949613
h ttps:// www.cnblogs.com/quanying/p/4629827.html





Предыдущая статьяXshell Xftp Чтобы продолжить использование этого приложения, вы должны применить последнюю версию...
Next:Команда Maven для отправки сторонних jar-пакетов в частный репозиторий Nexus
код фермерской сети, только опубликованные в процессе практики, столкнулся с техническими трудностями, не вводить в заблуждение других.
Я не уверен, что вы поклонник этого или нет.
диван
发表于 2021-12-26 17:20:57|只看该作者
Учитесь учиться 。。。。。
Код фермерской сети, публикуется только в процессе практики, возникли технические трудности, не вводите в заблуждение других.
christian louboutin outlet
发表于 2022-1-10 08:42:47|只看该作者
Исследование 。。。。。
Код фермерской сети, публикуется только в процессе практики, возникли технические трудности, не вводите в заблуждение других.
пол
发表于 2022-3-8 15:58:54|只看该作者
Не уверен, что вам удастся заключить выгодную сделку.
Код фермерской сети, публикуется только в процессе практики, возникли технические трудности, не вводите в заблуждение других.
Я не уверен, о чем я говорю.
5#
楼主|发表于 2023-2-18 21:47:09|只看该作者
Код фермерской сети, опубликован только в процессе практики, возникли технические трудности, не вводите в заблуждение других.
сапоги угги продажа
6#
owner|发表于 2023-3-10 21:21:15|只看该作者
Конфигурация через web.config

Код фермерской сети, публикуется только в процессе практики, возникли технические трудности, не вводите в заблуждение других.
Вы должны войти в систему, прежде чем сможете отправлять сообщения назад Войти | Зарегистрироваться

Эта версия интегральных правил


DISCLAIMER: Все программное обеспечение, материалы по программированию или статьи, опубликованные Code Farmer, предназначены только для использования в учебных и исследовательских целях; вышеуказанное содержимое не должно использоваться в коммерческих или незаконных целях, в противном случае все последствия будут возложены на самих пользователей. Это сайт информации из сети, спор об авторских правах не имеет никакого отношения к этому сайту. Вы должны полностью удалить вышеуказанное содержимое со своего компьютера в течение 24 часов после загрузки. Если вам понравилась программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшее подлинное обслуживание. Если есть какие-либо нарушения, пожалуйста, свяжитесь с нами по электронной почте, чтобы разобраться с этим.

Почта To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-19 03:50

Быстрый ответНазад к началуНазад к списку