Fork me on GitHub

Windows Server 2008 + IIS 7+ ASP.NET 并发优化

Windows Server 2008 + IIS 7+ ASP.NET 并发优化

站点出现这样的错误信息:

Error Summary:

HTTP Error 503.2 - Service Unavailable
The serverRuntime@appConcurrentRequestLimit setting is being exceeded. 

Detailed Error Information:

Module IIS Web Core 
Notification BeginRequest 
Handler StaticFile 

Error Code 0x00000000

由于之前使用的是默认配置,服务器最多只能处理5000个同时请求,今天下午由于某种情况造成同时请求超过5000,从而出现了上面的错误。

为了避免这样的错误,我们根据相关文档调整了设置,让服务器从设置上支持更多并发请求。

具体设置如下:

1. 调整IIS 7应用程序池队列长度 和 最大工作进程数

由原来的默认1000改为10000。

IIS Manager > 应用程序池 > 右键:高级设置

队列长度 : 10000

iis最大工作进程数:

最大工作进程数的设置方法:(拷贝)按照每工作进程能承载30个并发的原则来确定应用程序池的最大工作进程数。同时要注意,每个工作进程大约会占用200M左右的系统内存,在设置最大工作进程数的时候,要主要最大工作进程数与200M的乘积不要超过系统最大可用内存数。一般情况下,建议按照每次增加5个工作进程数的方式对最大工作进程数进行调整,调整完后对网站观察一段时间,如依然无法满足要求,再继续增加5个工作进程数。
最大工作进程数: 从1调整到5(1个工作进程大概占用200M系统内存)

2. 调整IIS 7的appConcurrentRequestLimit设置

由原来的默认5000改为100000。

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改为100000。

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

参考文章:http://technet.microsoft.com/en-us/library/dd425294(office.13).aspx

4. 修改注册表,调整IIS 7支持的同时TCPIP连接数

由原来的默认5000改为100000。

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

5. 运行命令使用设置生效

net stop http  & net start  http & iisreset 

完成上述4个设置,就可以支持更多的并发请求。

参考文章:

https://blog.csdn.net/qq_34515910/article/details/83107968
https://www.cnblogs.com/hgamezoom/p/3082538.html
https://blog.csdn.net/foreveryangting/article/details/80433345
https://www.cnblogs.com/dudu/archive/2009/11/10/1600062.html
posted @ 2019-11-26 14:20  秋楓  阅读(854)  评论(0编辑  收藏  举报