.NET在Windows Server环境让IIS上支持高并发
前言
最近为解决某项目要求的2000并发请求问题,在网上尝试了无数方法,不管程序如何优化调整,始终无法突破1000并发;so,不得不考虑服务器环境设置问题,接下来就看看如何让服务器从设置上支持10万个并发请求。
运行环境:
Windows Server 2012、.Net4.0、IIS8
1、调整IIS应用程序池配置
找到部署的程序对应的应用程序池—》高级设置—》:
- 队列长度:65535(根据服务器配置可以加长)
队列长度值设置为预期最多用户数的 1.5 倍
参考链接:https://learn.microsoft.com/zh-cn/previous-versions/office/communications-server/dd441171(v=office.13)
3. 固定时间间隔:1440分钟(24小时)
4. 闲置超时:0分钟(不超时)
2、调整IIS的appConcurrentRequestLimit设置
cmd命令行直接运行:
c:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000
可以直接在 %systemroot%\System32\inetsrv\config\applicationHost.config 路径下配置文件查看到该设置是否被修改(默认为5000):
<serverRuntime appConcurrentRequestLimit="100000" />
3、调整machine.config中的processModel > requestQueueLimit的设置
cmd命令行直接运行:
notepad %systemroot%\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
notepad %systemroot%\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
打开对应.net版本配置文件,编辑requestQueueLimit(默认为5000):
<configuration>
<system.web>
<processModel enable="true" requestQueueLimit="100000"/>
4、修改注册表,调整IIS支持的同时TCP/IP连接数
cmd命令行直接运行:
reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000
5、运行命令重启使设置生效
net stop http & net start http & iisreset
注意:新开页面会造成链接数大量增加,但是以window.open打开的不会增加连接数。
完成上述设置,一般情况就可以支持10万个并发请求,具体并发量还跟服务器配置有关。后续会跟进Linux环境配置。。。