首页 > 编程语言 >C#多线程环境下调用 HttpWebRequest 并发连接限制

C#多线程环境下调用 HttpWebRequest 并发连接限制

时间:2023-08-13 10:22:51浏览次数:46  
标签:C# 连接数 并发 默认 HttpWebRequest net 多线程

.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 中对最大并发连接数进行设置

https://learn.microsoft.com/zh-tw/dotnet/api/system.net.servicepointmanager.defaultpersistentconnectionlimit?view=net-7.0#system-net-servicepointmanager-defaultpersistentconnectionlimit

https://learn.microsoft.com/de-de/archive/blogs/jpsanders/understanding-maxservicepointidletime-and-defaultconnectionlimit

标签:C#,连接数,并发,默认,HttpWebRequest,net,多线程
From: https://www.cnblogs.com/daboluo/p/17626216.html

相关文章

  • WARNING: Use of this script to execute namenode is deprecated. WARNING: Attempti
    问题描述在我使用这个命令进行hdfs初始化时:hadoop-daemon.shstartnamenode爆出了这样的警告问题解决发现是这个命令现在已经有一点过时,需要换成这个命令才行:hdfsnamenode......
  • ABC 314 F 题解
    原题传送门题意有n支队伍进行比赛,起初,第i支队伍只有选手i一个人。总共要进行n-1场比赛,每次给出p和q,意为让p所在的队伍与q所在的队伍进行比赛(数据保证此时p和q不在同一支队伍),设p所在的队伍有\(siz_p\)个人,q所在的队伍有\(siz_q\)个人,则此次比赛中p......
  • openKylin 正式加入 RISC-V 基金会
    导读在RISC-V国际基金会中国联络人吴伟老师的推动下,近日,openKylin社区正式加入RISC-V基金会,成为其产业联盟成员,为RISC-V生态建设贡献更多力量,构筑操作系统与RISC-V架构软硬件生态协同发展。RISC-V是由加州大学伯克利分校研究团队在2010年推出的一个开源指令......
  • ChatGPT联网查询基于yahoo搜索引擎
    联网查询原理很简单1.对搜索内容分词2.将分词后的内容用yahoo搜索3.将搜索返回的内容交给ChatGPT整理提炼Demo代码如下importfetchfrom'node-fetch';importSegmentfrom'segment';import{HttpsProxyAgent}from'https-proxy-agent';constproxyUrl='http://1......
  • Oracle 11g
    Oracle读书笔记参考文档:FreeIT教程w3cschool教程《Oracle从入门到精通(第3版)明日科技》第1章Oracle11g概述1.1简述Oracle的发展史1.2关系型数据库的基本理论1.2.1关系型数据库与数据库管理系统1.2.2关系型数据库的E-R模型1.2.3关系型数据库的设......
  • c、SQLPlus命令
    SQL*Plus命令SQL*Plus与数据库的交互Oracle的SQL*Plus是与Oracle进行交互的客户端工具,在SQL*Plus中,可以运行SQL*Plus命令与SQL*Plus语句,主要介绍SQL*Plus命令。SQL*Plus是一个基于C/S两层结构的客户端操作工具,包括客户层(即命令行窗口)和服务器层(即数据库实例),这两层既可以在一......
  • CF452C 题解
    洛谷链接&CF链接题目简述有\(m\timesn\)张牌,有\(n\)个种类,每个种类有\(m\)张,现在抽一张放回,再抽一张,求这张牌与第一张抽出的牌种类相同的概率。思路本题是一道结论题,我们来推一下公式。首先需要特判一个点:只有\(1\)张牌,即\(n=m=1\),那么两次抽都会是这张牌,所......
  • 类(class)和包
    第5章类和包5.1简单类和无参方法在Scala中,类并不声明public;一个源文件中可以包含很多类,并且可以都是public级别在使用public级别的对类时,直接实例化对象就行了classCourse(valcourseName:String,varcourseNum:Int){vardesc:String="Scala编程"}在调......
  • Gunicorn
    Gunicorn参考博客:Web开发的重要概念辨析:CGI、WSGI、uWSGI、ASGI……WSGI&uwsgi&Nginx概念解释Gunicorn的使用手册gunicorn使用Gunicorn的使用手册看这篇就够了【用过都说好】Gunicorn配置详解相关概念WSGIWSGI是WebServerGatewayInterface的简称。WSGI标准在PEP3......
  • Docker配置Web
    Docker配置Web一、安装Docker安装步骤详见:Ubuntu20.04安装DockerDocker构建nginx+uwsgi+flask镜像(二)Docker容器化部署Flask项目+Gunicorn+Nginx二、方法一:搭建服务1、抓取镜像抓取最新镜像:$dockerpullubuntu抓取指定版本镜像:$dockerpullubuntu:18.04......