标签 高并发 下的文章

提高WebRequest方法的并发限制

在C#中,WebRequest方法和WebClient方法,在多线程时,对并发请求数量有一个默认限制,这个限制与操作系统相关,在Windows XP/Windows 7等PC系统上默认为2个,而在Windows 2008等服务器系统中,默认为10个,也就是说在出现高并发的环境中,使用WebRequest方法来进行POST或GET请求时,最多只能同时发送10个,剩下的都在排队。出现这个问题的原因是,在HTTP 1.0和HTTP 1.1规定最大连接数就是2,就一直延用到现在。
解决方法:
在程序中设置:

System.Net.ServicePointManager.DefaultConnectionLimit = 512;  //建议最高不要超过1024,具体看使用环境是否需要

或者在配置中设置:

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

以上。

Windows Server 2008 R2 让IIS支持高并发

IIS的默认设置只能支持很小的访问量,访问量大了(比如每秒几千)就会不响应,可以通过下面的设置使IIS支持高并发访问

1.调整IIS应用程序池队列长度:

IIS管理——>应用程序池——高级设置
队列长度:65535

2.调整IIS的appConcurrentRequestLimit设置
默认值为5000,修改为10万
在cmd中执行下面语句

c:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000

之后可以在%systemroot%\System32\inetsrv\config\applicationHost.config中查看到该设置:

<serverRuntime appConcurrentRequestLimit="100000" /> 

3.调整machine.config中的processModel>requestQueueLimit的设置
默认值5000,修改为10万

<configuration>
    <system.web>
        <processModel enable="true" requestQueueLimit="100000"/>

4.修改注册表,调整IIS 7支持的同时TCPIP连接数
默认值5000,修改为10万

reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000 

5.重启服务使生效

net stop http  & net start  http & iisreset

分类

最新文章

最近回复

归档

标签云

C# .net core asp.net 情感 SQL mongodb sql server EasyUI linux 身份验证 typecho .net sql注入 安全 kms 激活 MVC https IIS 高并发 IE 坑爹 服务器 mysql Combobox Datagrid 口语 数据抓取 远程下载

其它