转:多线程环境下调用 HttpWebRequest 并发连接限制

.net 的 HttpWebRequest 或者 WebClient 在多线程情况下存在并发连接限制,这个限制在桌面操作系统如 windows xp , windows 7 下默认是2,在服务器操作系统上默认为10. 如果不修改这个并发连接限制,那么客户端同时可以建立的 http 连接数就只有2个或10个。对于一些诸如浏览器或网络蜘蛛的应用,2个或10个并发数量实在太少,大大影响应用的性能。之所以有这个并发连接限制,是因为 http 1.0 和 http 1.1 标准规定并发连接数最大为2. 不过目前主流的浏览器都已经不遵循这个规则了,但 .net framework 依然默认遵循这个规则。

很多文章说用异步方式访问 HttpWebRequest 可以提高并发性能,但我测试下来,如果不修改这个默认并发连接数,同步或异步方式访问性能都很不好。

调整这个默认并发连接限制的方法很简单

只要在程序中设置:

System.Net.ServicePointManager.DefaultConnectionLimit = 512;

这个值最好不要超过1024。

我们也可以在app.config 中对最大并发连接数进行设置,方法如下:

<configuration>
<system.net>
<connectionManagement>
<add address = "http://www.google.com" maxconnection = "512" />
<add address = "*" maxconnection = "512" />
connectionManagement>
system.net>
configuration>

修改了这个设置后,并发性能明显提高,从原来每秒钟20次直接上升到每秒钟1000多次。

Original: https://www.cnblogs.com/haowuji/p/7422879.html
Author: 下-个路口
Title: 转:多线程环境下调用 HttpWebRequest 并发连接限制

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607475/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 自动化服务器巡检的实现过程

    由于上级的工作安排,从今年5月开始,每天都要做一些服务器信息检查。 [En] Due to the work arrangement of the superior, it is …

    Linux 2023年5月27日
    095
  • JS 模块化- 05 ES Module & 4 大规范总结

    1 ES Module 规范 ES Module 是目前使用较多的模块化规范,在 Vue、React 中大量使用,大家应该非常熟悉。TypeScript 中的模块化与 ES 类似。…

    Linux 2023年6月6日
    0133
  • Bean named ‘redisTemplate’ is expected to be of type ‘org.springframework.data.redis.core.StringRedisTemplate’ actually of type ‘org.springframework.data.redis.core.RedisTemplate’

    根据类名注入 类型不对 改成stringRedisTemplate,好了,原因@Resource是默认取字段名进行按照名称注入 StringRedisTemplate与RedisT…

    Linux 2023年5月28日
    0104
  • angular typescript 引入js文件

    第一步,将js文件放在应该放的位置,我是自己随便建了个js测试一下。 第二步,在angular.json里引入js。 第三步,在要使用的地方声明,然后就可以使用。 注意点:angu…

    Linux 2023年6月7日
    085
  • Gumbel_Softmax 概要

    解决argmax不可导,无法进行反向传播的问题 出现的原因: argmax(x,y)不可导的根本原因是其向量空间不是光滑的,有尖锐的点和面;而是某些任务中,argmax会被插入到反…

    Linux 2023年6月7日
    0112
  • map_set使用说明

    map_set使用说明 map的底层结构大致是一个哈希表,set的底层结构大致是一个红黑树 不代表全部! set #include"map_set.h" //s…

    Linux 2023年6月13日
    096
  • 聊聊消息中心的设计与实现逻辑

    厌烦被消息打扰,又怕突然间的安静; 一、业务背景 微服务的架构体系中,会存在很多基础服务,提供一些大部分服务都可能需要的能力,比如文件管理、MQ队列、缓存机制、消息中心等等,这些服…

    Linux 2023年6月14日
    092
  • 一文带你玩透结构体和方法

    package main import ( "fmt" ) //定义结构体类型User type User struct { username string &…

    Linux 2023年6月7日
    084
  • 使用PowerShell收集多台服务器的性能计数器

    写在前面 当管理多台Windows Server服务器时(无论是DB、AD、WEB以及其他的应用服务器),当出现性能或其他问题后,参阅性能计数器都是一个非常好的维度从而推测出问题可…

    Linux 2023年5月28日
    089
  • Linux上安装tomcat

    参考https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-8-on-cento…

    Linux 2023年6月6日
    097
  • MySQL之多表查询、Navicat及pymysql

    一、多表查询 1.1 数据准备 — 建表 create table dep( id int primary key auto_increment, name varchar(20…

    Linux 2023年6月14日
    0105
  • 搭建docker镜像仓库(二):使用harbor搭建本地镜像仓库

    一.系统环境 二.前言 三.Harbor 四.使用harbor搭建私有镜像仓库 4.1 环境介绍 4.2 k8smaster节点安装配置harbor 4.2.1 安装harbor离…

    Linux 2023年6月7日
    0140
  • Linux基础入门笔记

    Linux内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。 Linux是一套免费使用和自由传播的类Unix操作系统,是一…

    Linux 2023年6月14日
    069
  • 1s 创建100G文件,最快的方法是?

    在我们日常工作中,为了验证开发的功能,比如:文件上传功能或者算法的处理效率等,经常需要一些大文件进行测试,有时在四处找了一顿之后,发现竟然没有一个合适的,虽然 Linux 中也有一…

    Linux 2023年5月27日
    090
  • Java实现哈希表

    2.1、哈希冲突 冲突位置,把数据构建为链表结构。 装载因子=哈希表中的元素个数 / (散列表)哈希表的长度 装载因子越大,说明链表越长,性能就越低,那么哈希表就需要扩容,把数据迁…

    Linux 2023年6月14日
    087
  • linux常用命令

    linux常用目录 /bin :bin是Binary的缩写,这个目录存放着最经常使用的命令。 /ect :这个目录用来存放所有的系统所需要的配置文件和子目录。 /home:用户的主…

    Linux 2023年6月13日
    0105
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球