.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. vue1与vue2的路由 以及vue2项目大概了解
  2. linux 内存查看_Linux终端查看最消耗CPU内存的进程
  3. 重构手册阅读笔记:重构的含义
  4. 详解:Hive的存储格式与对比
  5. kubernetes之kubedns部署(kubedns,dnsmasq,exechealthz)以及dns-autoscaler部署
  6. 百度,在模仿和创新中成长
  7. spring @Transactional注解的使用和失效场景
  8. 线程池的实现原理分析
  9. 授权码模式、Token登录认证
  10. java计算机毕业设计服装连锁店后台管理系统MyBatis+系统+LW文档+源码+调试部署
  11. Python|十五个超级炫酷代码
  12. TH75 V2 双模蓝牙5.2热插拔PCB
  13. nebula graph调研
  14. 服务器三块硬盘missing,服务器阵列崩溃、硬盘损坏、分区表丢失、红屏,还好数据救回来了...
  15. 斯皮尔曼等级相关系数 matlab,斯皮尔曼等级相关(matlab专题)
  16. 【面经】数据分析岗_面试题整理总结(持续更新中…)
  17. ai怎么平均排列,ai怎样可以按设定的距离进行平均分布排列
  18. 使用cephadm安装ceph octopus
  19. 【转载于庄卓然长微博】 阿里2013年双十一准备中的技术突破与亮点
  20. MacBook Linux Windows C和C++开发工具介绍

热门文章

  1. go get 加 -u 和不加 -u 参数的区别
  2. Scala关系运算符的一览图
  3. 【Java面试题】汽水瓶问题
  4. Linux arp相关命令(地址解析协议)
  5. Highcharts JS去除Highcharts.com链接的方法
  6. centos 安装低版本内核_Linux 升级内核
  7. cmd小游戏编程100例_学宏程序编程,这些知识必不可少!
  8. Python常用命令行(持续更新)
  9. QML for Android通过ScreenRecorder录制屏幕并保存为本地视频
  10. 浮点加减运算之0舍1入法与恒置1法