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

转载于:https://www.cnblogs.com/answercard/p/5198234.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. Java关键字(四)——final
  2. android置组件下面,Android Jetpack架构组件(十二)之Hilt
  3. Android开发 asmack断线收不到通知的BUG解决
  4. 安装和配置sendmail
  5. 2021牛客多校3 - 24dian(dfs)
  6. Cython入门.VS.C++
  7. label标签 html5,HTML5 label 标签
  8. 你的消息队列如何保证消息不丢失,且只被消费一次,这篇就教会你
  9. 详解4种微服务框架接入Istio方案
  10. 承接一个外包开发项目后,开发流程以及如何做好。
  11. 红米note3支持html,红米Note3什么配置参数?红米Note3标配有什么?
  12. java图片颜色取反色,照片底片模式
  13. 人人都可以用Mac--安装和卸载应用软件
  14. 制作粉色少女系列❤生日快乐祝福网页❤(HTML+CSS+JS)
  15. python获取管理员权限
  16. 系统版本aplpha,Beta等表示的意思
  17. 泰坦尼克号(1997)
  18. REBUILD INDEX
  19. Windows环境下msysgit下安装gitflow步骤。
  20. NVIDIA下载问题

热门文章

  1. idea-jvm参数设置(有注释)
  2. tf报错 之 assertion failed: [Need value.shape >= size, got ] [336 210 3] [224 224 3]
  3. STL常用容器大致对比
  4. html_5_小作业2_世纪佳缘注册页面
  5. [BUUCTF-pwn]——hgame2018_flag_server
  6. mongodb 搜索速度_初识 MongoDB 数据库
  7. 1.2.4 Selecting a defualt database
  8. spring自定义标签实现
  9. yum是什么?(linux命令) .
  10. ./sqlplusSP2-0667: Message file sp1lang.msb not found。SP2-0750: You may need to set ORACLE_HOME t