Microsoft IIS Web服务器配置优化

相信大家所在团队应该或多或少会存在一些使用.NET 4.x的老系统,本文总结了笔者所在团队对.NET 4.x应用的线上IIS服务器进行的一些配置优化,供参考。.

1,环境版本说明

适用的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(及以上版本)

Microsoft IIS Web服务器配置优化

2,.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

3,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" />`
4,操作系统http.sys配置优化

关于http.sys:它是Windows操作系统的一个核心组件,它运行在操作系统的内核模式下,是一个网络驱动程序,始终处于运行状态,对于用户的HTTP请求能够及时作出反应。

Microsoft IIS Web服务器配置优化

(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 32768

reference:https://www.cnblogs.com/dudu/archive/2012/06/06/bad_request_request_too_long.html

最后运行以下命令让配置生效(在powershell下通过 | 符号连接多个命令):

net stop http  | net start http | iisreset
5,操作系统TCP端口配置优化

Windows Server默认的TCP MaxUserPort限制为5000,超出TCP连接端口数限制也会引起服务器问题(参考:博客园主站的TCP MaxUserPort引起的服务器问题 )。
修改:
在注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 中添加名为MaxUserPort,类型为DWORD(32-bit),值为65534(10进制)的项目。

Microsoft IIS Web服务器配置优化

添加后重启计算机生效。

Note:如果你的多个应用站点都是使用同一个端口(比如:80端口),那么放宽此TCP MaxUserPort限制很有必要!

6,IIS整体配置优化

(1)关闭目录浏览
(2)关闭IIS日志
(3)启用IIS应用预加载
目的:解决第一次(或者被应用程序池回收后)访问慢的问题
方法:
step1,在服务器管理中安装应用程序初始化功能

Microsoft IIS Web服务器配置优化

Microsoft IIS Web服务器配置优化

step2,在IIS为指定网站设置预加载
选择网站-网站设置-高级设置:

Microsoft IIS Web服务器配置优化

setp3,在IIS整体设置“配置编辑器”:

Microsoft IIS Web服务器配置优化

设置后点击应用按钮生效。

7,IIS应用配置优化

建议设置应用池默认配置以便多个应用站点复用:
(1)常规
队列长度:改为65535
启动模式:改为AlwaysRunning

Microsoft IIS Web服务器配置优化

Note:队列长度改大这个操作是把双刃剑,取决你的服务器配置 及 应用程序的性能,建议谨慎设置。

(2)回收
改为特定时间(比如凌晨4点)回收:

Microsoft IIS Web服务器配置优化

(3)进程模型
关闭时间限制:改为120s
空闲超时操作:改为Suspend
启动时间限制:改为120s
闲置超时:改为0分钟

Microsoft IIS Web服务器配置优化
Ref 参考资料

(1)dudu,《支持高并发的IIS Web服务器常用配置 》
(2)dudu,《让Windows Server + IIS支持10万并发请求 》
(3)滴答的雨,《站点部署:IIS配置优化指南》