相信大家所在团队应该或多或少会存在一些使用.NET 4.x的老系统,本文总结了笔者所在团队对.NET 4.x应用的线上IIS服务器进行的一些配置优化,供参考。
环境版本说明
适用的IIS版本:IIS 7.0, IIS 7.5, IIS 8.0适用的Windows版本:Windows Server 2008, Windows Server 2008 R2, Windows Server 2012
集采线上环境对应版本:.NET Framework 4.5(及以上版本) + IIS8.0(及以上版本) + Windows Server 2012 R2(及以上版本)
.NET Framework配置优化
找到C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config 修改`<processModel autoConfig="true" />`为
`<processModel enable="true" requestQueueLimit="100000" maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50" minIoThreads="50"/>`修改后点击保存立即生效,修改此配置可以移除自动配置的请求队列限制,这里放宽到10万请求量并放宽ASP.NET线程数限制。
Note:关于.NET中的workerThread和ioThread的概念,可以阅读https://blog.csdn.net/wwwpcstarcomcn/article/details/11892711
IIS的applicationHost配置优化
打开cmd以管理员身份执行以下命令:`C:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000`验证:找到C:\Windows\System32\inetsrv\config\applicationHost.config中的以下内容
`<serverRuntime appConcurrentRequestLimit="100000" />`
操作系统http.sys配置优化
关于http.sys:它是Windows操作系统的一个核心组件,它运行在操作系统的内核模式下,是一个网络驱动程序,始终处于运行状态,对于用户的HTTP请求能够及时作出反应。(1)注册表设置命令1(将最大连接数设置为10万):
`reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000`(2)注册表设置命令2(解决Bad Request - Request Too Long问题):
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters /v MaxFieldLength /t REG_DWORD /d 32768 reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters /v MaxRequestBytes /t REG_DWORD /d 32768reference:https://www.cnblogs.com/dudu/archive/2012/06/06/bad_request_request_too_long.html
最后运行以下命令让配置生效(在powershell下通过 | 符号连接多个命令):
net stop http | net start http | iisreset
操作系统TCP端口配置优化
Windows Server默认的TCP MaxUserPort限制为5000,超出TCP连接端口数限制也会引起服务器问题(参考:博客园主站的TCP MaxUserPort引起的服务器问题 )。 修改: 在注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 中添加名为MaxUserPort,类型为DWORD(32-bit),值为65534(10进制)的项目。Note:如果你的多个应用站点都是使用同一个端口(比如:80端口),那么放宽此TCP MaxUserPort限制很有必要!
IIS整体配置优化
(1)关闭目录浏览 (2)关闭IIS日志 (3)启用IIS应用预加载 目的:解决第一次(或者被应用程序池回收后)访问慢的问题 方法: step1.在服务器管理中安装应用程序初始化功能step2.在IIS为指定网站设置预加载
选择网站-网站设置-高级设置:
setp3.在IIS整体设置“配置编辑器”:
设置后点击应用按钮生效。
IIS应用配置优化
建议设置应用池默认配置以便多个应用站点复用: (1)常规 队列长度:改为65535 启动模式:改为AlwaysRunning
Note:队列长度改大这个操作是把双刃剑,取决你的服务器配置 及 应用程序的性能,建议谨慎设置。(2)回收 改为特定时间(比如凌晨4点)回收:
(3)进程模型
关闭时间限制:改为120s
空闲超时操作:改为Suspend
启动时间限制:改为120s
闲置超时:改为0分钟
参考资料
(1)dudu,《支持高并发的IIS Web服务器常用配置 》
(2)dudu,《让Windows Server + IIS支持10万并发请求 》
(3)滴答的雨,《站点部署:IIS配置优化指南》
来源:EdisonTalk ,作者爱迪生
武穆逸仙 https://www.iwmyx.cn/microsoftiiswebfwqpa.html