.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多次。

-----------------------------

天王盖地虎小说网:http://www.twgdh.com/

转载于:https://www.cnblogs.com/haowuji/p/7422879.html

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

  1. 多线程环境下调用 HttpWebRequest 并发连接限制

    .net 的 HttpWebRequest 或者 WebClient 在多线程情况下存在并发连接限制,这个限制在桌面操作系统如 windows xp , windows  7 下默认是2,在服务器操作 ...

  2. HttpClient在多线程环境下踩坑总结

    HttpClient在多线程环境下踩坑总结 问题现场 在多线程环境下使用HttpClient组件对某个HTTP服务发起请求,运行一段时间之后发现客户端主机CPU利用率呈现出下降趋势,而不是一个稳定的状 ...

  3. Java多线程之单例模式在多线程环境下的安全问题

    Java多线程之单例模式在多线程环境下的安全问题 目录: 单例模式基本概念 单线程下的单例模式 多线程下的单例模式 单例模式volatile分析 1. 单例模式基本概念 基本概念转载自:单例模式|菜鸟 ...

  4. 单例模式的5种实现方式,以及在多线程环境下5种创建单例模式的效率

    这段时间从头温习设计模式.记载下来,以便自己复习,也分享给大家. [java] view plaincopy package com.iter.devbox.singleton; /** * 饿汉式 ...

  5. flask keras 多线程环境下加载模型

    keras 多线程环境下加载模型 Tensor Tensor is not an element of this graph. 问题场景 keras 使用flask 发布深度学习模型服务,模型有一个定 ...

  6. 多线程环境下HashMap导致CPU100%

    引言 昨天早上线上系统开始作业了一段时间以后,突然收到服务器报警,服务器CPU持续占用100%,导致线上系统不能正常使用,我登录服务器top了一下,发现java进程占用cpu400%, 由于前天晚上上 ...

  7. 多线程环境下的线程不安全问题(1)

    在不考虑多线程的情况下,很多类代码都是完全正确的,但是如果放在多线程环境下,这些代码就很容易出错,我们称这些类为 线程不安全类 .多线程环境下使用线程安全类 才是安全的. 下面是一个线程不安全类的例子 ...

  8. 1.Hyper-V虚拟机在wifi环境下的外网连接配置

    1.Hyper-V虚拟机在wifi环境下的外网连接配置 1.1.配置Hyper-V虚拟交换机 1.2.为虚拟机配置虚拟交换机 1.3.配置网络共享 1.4.为虚拟机配置静态IP 1.5.参考 1.Hy ...

  9. 多线程环境下,程序真是危机四伏

    姿势在不断的更新迭代, 太卷了. 你管这也叫线程安全? 最近大意了,竟然想将<面试官:实现一个带值变更通知能力的Dictionary>一文中的临界锁只应用到写操作. 内心旁白:读操作又不会 ...

最新文章

  1. python 列表生成式、lower()和upper()的使用
  2. 最后两天-微生物组-宏基因组分析(线上/线下同时开课,2020最后一期)
  3. 【温故知新】CSS学习笔记(背景)
  4. Android切换到主线程
  5. 安装Openface,实现人脸比对
  6. 技嘉主板GA-B85M-D3V PLUS 1150组装问题汇总
  7. python-docx 如何获取当前字号_调整字号保护视力?专家有一个更好的建议
  8. 超级计算机和人比,和超级计算机相比,人类的大脑很弱吗
  9. 玩转oracle 11g(8):使用profile管理用户口令
  10. 数据:以太坊2.0合约质押新增7.47万ETH
  11. Object []转换为double []
  12. 08.第三章 数字特征与特征函数(1)
  13. js禁止输入框输入特殊符号或emoji表情
  14. 无线WiFi漫游的基本原理及搭建
  15. CoAP协议的常用开源代码实现
  16. 设置让我们为Express加密
  17. MCUXpresso开发RT1060(1)——使用RGB接口LCD
  18. C4D渲染插件阿诺德材质预设 Arnold Shader Suite for C4D v3
  19. python中choice的用法_Python3 choice 函数
  20. 最伟大的软件Unix---英雄迟暮

热门文章

  1. jQuery easyUI--选项卡右键菜单
  2. class没有发布到tomcat_面试官扎心一问:Tomcat 在 SpringBoot 中是如何启动的?
  3. 基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(九)
  4. n型半导体和p型半导体的区别_王煜JMCA: N, P掺杂碳负载的PtP2纳米颗粒自转化为核壳型Pt/PtP2:一种高效和稳定的ORR催化剂...
  5. 线段树递归和非递归实现+hdu1166 敌兵布阵
  6. lingo变量无限制版本_【运筹学】用Lingo求解运输问题,兼谈Lingo语法
  7. python有几种打开方式_Python中几个以“__”开头的方法介绍总结
  8. python处理excel代码_Python实现读写Excel和修改Excel的代码
  9. javascript设计模式_开发者都应该了解的7种JavaScript设计模式
  10. 设计模式的理解: 适配器模式 Adapter