让IIS支持高并发的Web服务器常用设置

 更新时间:2023年10月26日 13:01:52   投稿:mdxy-dxy  
对于大流量的基于iis的windows服务器来说,必须要设置的几个点,这里就为大家整理一下

适用的Windows版本:Windows Server 2008, Windows Server 2008 R2, Windows Server 2012

1、应用程序池(Application Pool)的设置: 

  • General->Queue Length设置为65535(队列长度所支持的最大值)
  • Process Model->Idle Time-out设置为0(不让应用程序池因为没有请求而回收)
  • Recycling->Regular Time Interval设置为0(禁用应用程序池定期自动回收)

2、.Net Framework相关设置

a) 在machine.config中将

<processModel autoConfig="true" />

改为

<processModel enable="true" requestQueueLimit="100000"/>

(保存后该设置立即生效)

b) 打开C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsers\Default.browser,找到<defaultBrowser id="Wml" parentID="Default" >,注释<capabilities>部分,然后运行在命令行中运行aspnet_regbrowsers -i。

<defaultBrowser id="Wml" parentID="Default" >
    <identification>
        <header name="Accept" match="text/vnd\.wap\.wml|text/hdml" />
        <header name="Accept" nonMatch="application/xhtml\+xml; profile|application/vnd\.wap\.xhtml\+xml" />
    </identification>
<!--
    <capabilities>
        <capability name="preferredRenderingMime"              value="text/vnd.wap.wml" />
        <capability name="preferredRenderingType"              value="wml11" />
    </capabilities>
-->
</defaultBrowser>

以解决text/vnd.wap.wml问题。

3、IIS的applicationHost.config设置

设置命令:

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

设置结果:

<serverRuntime appConcurrentRequestLimit="100000" />

(保存后该设置立即生效)

4、http.sys的设置

注册表设置命令1(将最大连接数设置为10万):

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

注册表设置命令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

(需要在命令行运行 net stop http  & net start http & iisreset 使设置生效)

5、针对负载均衡场景的设置

在Url Rewrite Module中增加如下的规则:

<rewrite>
    <allowedServerVariables>
        <add name="REMOTE_ADDR" />
    </allowedServerVariables>
    <globalRules>
        <rule name="HTTP_X_Forwarded_For-to-REMOTE_ADDR" enabled="true">
            <match url=".*" />
            <serverVariables>
                <set name="REMOTE_ADDR" value="{HTTP_X_Forwarded_For}" />
            </serverVariables>
            <action type="None" />
            <conditions>
                <add input="{HTTP_X_Forwarded_For}" pattern="^$" negate="true" />
            </conditions>
        </rule>
    </globalRules>
</rewrite>

相关博文:迁入阿里云后遇到的Request.UserHostAddress记录IP地址问题

注意事项:添加该URL重写规则会造成IIS内核模式缓存不工作,详见微软的坑:Url重写竟然会引起IIS内核模式缓存不工作

6、 设置Cache-Control为public

在web.config中添加如下配置: 

<configuration>
    <system.webServer>
        <staticContent>
            <clientCache cacheControlCustom="public" />
        </staticContent>
    </system.webServer>
</configuration>

7、ASP.NET线程设置

在machine.config的<processModel>中添加如下设置: 

<processModel enable="true" maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50" minIoThreads="50"/>

相关博文:云计算之路-阿里云上:从ASP.NET线程角度对“黑色30秒”问题的全新分析

8、修改TCP MaxUserPort限制

由默认5000改为65534,修改方法:在注册表 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 中添加名为MaxUserPort,类型为DWORD(32-bit),值为65534(10进制)的项目并重启计算机。

相关文章

  • WIN2003 IIS相关错误的解决方法

    WIN2003 IIS相关错误的解决方法

    这篇文章主要介绍了WIN2003 IIS相关错误的解决方法的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-10-10
  • Win2003服务器防SQL注入神器--D盾_IIS防火墙

    Win2003服务器防SQL注入神器--D盾_IIS防火墙

    D盾_IIS防火墙是专为IIS设计的一个主动防御的保护软件,以内外保护的方式 防止网站和服务器给入侵,在正常运行各类网站的情 况下,越少的功能,服务器越安全的理念而设计! 限制了常见的入侵方法,让服务器更安全!
    2017-09-09
  • windows7 安装iis7.0图文教程(不需要单独的安装包)

    windows7 安装iis7.0图文教程(不需要单独的安装包)

    微软没有提供独立的iis7.0安装包,目前,网上也没有可靠的提取包。正常的windows7版本(非精简版),安装系统之后都可以直接进行iis的安装,并不需要安装盘。
    2012-09-09
  • WIN取消100M隐藏分区、异常断电后绕过修复模式

    WIN取消100M隐藏分区、异常断电后绕过修复模式

    这篇文章主要介绍了WIN取消100M隐藏分区、异常断电后绕过修复模式,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • windows server 2019 程序开机自启动的几种实现方法

    windows server 2019 程序开机自启动的几种实现方法

    最近在配置服务器的时候一些程序需要自动启动,方便我们定时检查错误并且同步一些数据等等,那么就需要注意一些地方的设置,这里脚本之家小编就为大家做个介绍
    2024-05-05
  • Windows服务器长时间保持远程桌面不被自动断开的方法

    Windows服务器长时间保持远程桌面不被自动断开的方法

    服务器在通过mstsc远程连接后,如果长时间不操作,会自动断开,对于服务器操作,这种断开可能会影响工作效率,如何设置可以一直保持连接状态呢
    2023-07-07
  • 你的服务器IIS最大并发数有多少?

    你的服务器IIS最大并发数有多少?

    做完假设,现在做限制,设置站点保持HTTP连接,超时设置成0,就是不会超时。在站点请求的default.aspx页面设置线程Thread.Sleep(int.MaxValue),接下来开发一个用来保持连接的小程序。
    2009-08-08
  • HTTPS 通信原理及详细介绍

    HTTPS 通信原理及详细介绍

    这篇文章主要介绍了HTTPS 通信原理及详细介绍的相关资料,HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议,需要的朋友可以参考下
    2016-12-12
  • win2003 远程桌面端口修改方法(注册表)

    win2003 远程桌面端口修改方法(注册表)

    这篇文章主要介绍了win2003 远程桌面端口修改方法(注册表),需要的朋友可以参考下
    2016-09-09
  • IP策略实现服务器禁止Ping

    IP策略实现服务器禁止Ping

    有什么办法可以使自己的服务器在在线状态下逃脱搜索呢?安装和设置防火墙当然是解决问题的最佳途径。如果您没有安装防火墙,创建一个禁止所有计算机Ping本机IP地址的安全策略,可以实现同样的功能。
    2009-08-08

最新评论