`

IIS 优化

 
阅读更多

通过对IIS7的配置进行优化,调整IIS7应用池的队列长度,请求数限制,TCPIP连接数等方面,从而使WEB服务器的性能得以提升,保证WEB访问的访问流畅。

       IIS7.5是微软推出的最新平台IIS,性能也较以前有很大的提升,但是默认的设置配不适合很大的请求。但是我们可以根据实际的需要进行IIS调整,使其性能更佳,支持同时10万个请求。

       以下方案,通过对IIS7的配置进行优化,调整IIS7应用池的队列长度,请求数限制,TCPIP连接数等方面,从而使WEB服务器的性能得以提升,保证WEB访问的访问流畅。

 

解决方案:

步骤一:调整IIS的应用程序池队列长度。

在【应用程序池】列表中,选择你相应网站所使用的应用程序池,将原来的队列长度由1000改为65535。当然这里的队列长度你可以根据自己的访问用户*1.5来设置,例如:你有2000用户,你此处就可以设置为3000(3000=2000用户数*1.5),官方参考

设置如下图:

 SNAGHTMLcf6a1b

 

步骤二:调整IIS的appConcurrentRequestLimit值

打开cmd命令,运行命令:c:\Windows\System32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000

image

image

 

步骤三:修改ASP.NET请求队列限制即调整machine.config中的processModel>RequestQueueLimit

1、单击“开始”,然后单击“运行”。

2、在“运行”对话框中,键入 notepad %systemroot%\Microsoft.Net\Framework64\v4.0.30319\CONFIG\machine.config,然后单击“确定”。(不同的.NET版本路径不一样,你可以选择你自己当前想设置的.NET版本的config)

3、找到如下所示的 processModel 元素:<processModel autoConfig="true" />

4、将 processModel 元素替换为以下值:<processModel enable="true" requestQueueLimit="15000" />

image

5、保存并关闭 Machine.config 文件。

 

步骤四:修改注册表,调整IIS支持的并发TCPIP连接数

在cmd命令中运行命令:reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000,当然也可以手动去注册表修改

image

可在注册表中查看

image

至此,IIS的调整优化就完成了,可以同时支持10W个请求。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

 

具体设置如下:

 

1. 调整IIS 7应用程序池队列长度

 

由原来的默认1000改为65535。

 

IIS Manager > ApplicationPools > Advanced Settings

 

Queue Length : 65535

 

 

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的设置

 

1、单击“开始”,然后单击“运行”。

 

2、在“运行”对话框中,键入 notepad %systemroot%\Microsoft.Net\Framework64\v4.0.30319\CONFIG\machine.config,然后单击“确定”。(不同的.NET版本路径不一样,你可以选择你自己当前想设置的.NET版本的config)

 

对于.net2.0对应的是

 

notepad %systemroot%\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.config

 

.4.0

 

notepad %systemroot%\Microsoft.Net\Framework64\v4.0.30319\CONFIG\machine.config

 

3、找到如下所示的 processModel 元素:<processModel autoConfig="true" />

 

4、将 processModel 元素替换为以下值:<processModel enable="true" requestQueueLimit="100000" />

 

 

5、保存并关闭 Machine.config 文件。
由原来的默认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个设置,就可以支持10万个并发请求,博客园博客服务器已经启用上述设置。

 

解决方案:

 

步骤一:调整IIS的应用程序池队列长度。
在【应用程序池】列表中,选择你相应网站所使用的应用程序池,将原来的队列长度由1000改为65535。当然这里的队列长度你可以根据自己的访问用户*1.5来设置,例如:你有2000用户,你此处就可以设置为3000(3000=2000用户数*1.5), 官方参考

 

设置如下图:

 

 

 

 

 

 

 步骤二:调整IIS的appConcurrentRequestLimit值

 

打开cmd命令,运行命令:c:\Windows\System32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000

 

 

 步骤三:修改ASP.NET请求队列限制即调整machine.config中的processModel>RequestQueueLimit

 

1、单击“开始”,然后单击“运行”。

 

2、在“运行”对话框中,键入 notepad %systemroot%\Microsoft.Net\Framework64\v4.0.30319\CONFIG\machine.config,然后单击“确定”。(不同的.NET版本路径不一样,你可以选择你自己当前想设置的.NET版本的config)

 

3、找到如下所示的 processModel 元素:<processModel autoConfig="true" />

 

4、将 processModel 元素替换为以下值:<processModel enable="true" requestQueueLimit="15000" />

 

 

 5、保存并关闭 Machine.config 文件。

 

 

 

 

步骤四:修改注册表,调整IIS支持的并发TCPIP连接数

 

在cmd命令中运行命令:reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000,当然也可以手动去注册表修改

 

为了方法大家与自己使用,我把上面能用bat操作简单放到一个bat文件里面了。将下面的内容保存为do.bat文件运行就可以了,需要手工的自己操作

 

1
2
3
4
5
6
7
8
9
10
11
#appConcurrentRequestLimit
c:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000
 
reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000
 
# 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
 
#更多的可以可以查看这篇文章,手工操作的可以查看这篇文章
start "C:\Program Files\Internet Explorer\iexplore.exe" http://www.jb51.net/article/36073.htm

 

下面为大家补充一点知识:

 

支持高并发的IIS Web服务器常用设置
适用的IIS版本:IIS 7.0, IIS 7.5, IIS 8.0

 

适用的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。

 

1
2
3
4
5
6
7
8
9
10
11
12
<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中增加如下的规则:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<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中添加如下配置:

 

1
2
3
4
5
6
7
<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"/>

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

IIS 之 在IIS7、IIS7.5中应用程序池最优配置方案

  找到Web站点对应的应用程序池,“应用程序池” → 找到对应的“应用程序池” → 右键“高级设置...”

  

一、一般优化方案

  1、基本设置

  [1] 队列长度: 默认值1000,将原来的队列长度改为 65535。

  [2] 启动32位应用程序:默认值False,改为True, 否则安装一些32的组建或32位的php都会出错。

  [3] 托管管道模式:Integrated 或 Classsic。 

  

  2、高级设置

  [1] 闲置超时(分钟):默认20分钟,修改设长。

  [2] 快速故障防护 → 已启用 :默认True,改为False。 

  

  3、解决PEP第一次打开PEP速度慢

  回收间隔时间

  

  使用windows server 2008 r2解决回收假死的问题

  打开应用程序池 -> 高级设置 ->在“禁止重叠回收”里选择“true”,这样就有效避免了应用程序池回收假死问题。

  

二、支持同时10万个请求

  通过对IIS7的配置进行优化,调整IIS7应用池的队列长度,请求数限制,TCPIP连接数等方面,从而使WEB服务器的性能得以提升,保证WEB访问的访问流畅。

  站点碰到如下问题:

  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,从而出现了上面的错误。

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

  具体设置如下:

  1. 调整IIS 7应用程序池队列长度

  将原来的队列长度由默认值 1000 改为 65535。当然这里的队列长度你可以根据自己的 访问用户*1.5 来设置,例如:有2000用户,此处就可以设置为3000(3000=2000用户数*1.5)。

  2.  调整IIS 7的appConcurrentRequestLimit设置

  由原来的默认5000改为100000。

  [1] 在cmd中执行:

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

  [2] 在%systemroot%\System32\inetsrv\config\applicationHost.config中可以查看到该设置:

  <serverRuntime appConcurrentRequestLimit="100000" />

  

  

  3. 调整machine.config中的processModel>requestQueueLimit的设置

  [1] 单击“开始”,然后单击“运行”,或者 windows + R。

  [2] 在“运行”对话框中,键入 notepad %systemroot%\Microsoft.Net\Framework64\v4.0.30319\CONFIG\machine.config,然后单击“确定”。(不同的.NET版本路径不一样,可以选择你自己当前想设置的.NET版本的config)

  [3] 找到如下所示的 processModel 元素:<processModel autoConfig="true" />

  [4] 将 processModel 元素替换为以下值:<processModel enable="true" requestQueueLimit="15000" />

  

  [5] 保存并关闭 Machine.config 文件。
  由原来的默认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。在cmd中执行:

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

  

  可在注册表中查看

  

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

  net stop http  & net start  http & iisreset

  完成上述5个设置,就可以支持10万个并发请求,博客园博客服务器已经启用上述设置。

  为了方法大家与自己使用,我把上面能用bat操作简单放到一个bat文件里面了。将下面的内容保存为do.bat文件运行就可以了,需要手工的自己操作

 

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

  适用的IIS版本:IIS 7.0, IIS 7.5, IIS 8.0

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

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

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

  2、.Net Framework相关设置

  [1] 在machine.config中将
  < processModel autoConfig="true" />

  改为

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

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

  [2] 打开C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsers\Default.browser,找到<defaultBrowser id="Wml" parentID="Default" >,注释<capabilities>部分,然后在命令行中运行aspnet_regbrowsers -i。以解决text/vnd.wap.wml问题。

 

  设置命令:

  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中增加如下的规则:

 

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

  6、 设置Cache-Control为public

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

复制代码
复制代码
<configuration>
 <system.webServer>
  <staticContent>
   <clientCache cacheControlCustom="public" />
  </staticContent>
 </system.webServer>
</configuration>
复制代码
复制代码
 

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

< processModel enable="true" maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50" minIoThreads="50"/>
分享到:
评论

相关推荐

    IIS优化 为Web服务器减负

    ### IIS优化技巧:为Web服务器减负 在IT领域,特别是对于那些依赖于IIS(Internet Information Services)作为Web服务平台的企业来说,IIS的优化是确保网站性能、安全性和稳定性的重要步骤。本文将深入探讨如何通过...

    WIN2003 IIS 的基本配置与应用及IIS优化设置

    **IIS优化设置** 优化IIS能提高服务器性能,降低资源消耗,以下是一些常见优化策略: 1. **限制并发连接数** - 调整MaxConnections限制,避免过多连接导致服务器过载。 2. **启用缓存** - 开启静态内容缓存,...

    IIS优化为WEB服务器减负.

    ### IIS优化为WEB服务器减负 随着互联网技术的发展与应用需求的增长,Web服务器作为支撑企业网站的关键基础设施,面临着越来越大的挑战。对于采用Microsoft Internet Information Services(IIS)作为Web服务器的...

    WIN2003IIS的基本配置与应用及IIS优化设置(包括PHP与静态化配置)[汇编].pdf

    《Windows 2003 IIS的基本配置与应用及IIS优化设置》 Windows Server 2003上的Internet Information Services(IIS)是微软提供的一个强大的Web服务器平台,广泛用于托管网站和服务。本教程主要涵盖了IIS的基本配置...

    Windows2003服务器安装及设置教程之十八IIS优化篇.doc

    【Windows 2003 服务器安装及设置教程之IIS优化篇】 本文将详细介绍如何在Windows 2003服务器上优化IIS(Internet Information Services)以提升服务器性能和客户端访问速度。优化主要包括两个主要方面:启用Gzip...

    IIS 优化说明文档

    本文描述如何优化IIS配置,&lt;processModel enable="true" requestQueueLimit="100000" maxWorkerThreads="200" minWorkerThreads="100" /&gt;

    WIN2003IIS的基本配置与应用及IIS优化设置(包括PHP与静态化配置).pdf

    通过以上步骤,你可以有效地配置和优化Windows 2003的IIS,为PHP应用程序和其他Web服务提供稳定、高效的服务。记得在配置过程中,根据实际需求和服务器的硬件条件进行调整,以达到最佳的性能和安全性。

    win2012使用IIS配置php使用wincache进行优化访问速度

    ### 使用Windows 2012与IIS配置PHP及WinCache优化访问速度 #### 概述 本文档详细介绍了如何在Windows Server 2012操作系统上使用Internet Information Services (IIS)配置PHP环境,并利用Microsoft提供的WinCache...

    WIN2003 IIS 的基本配置与应用及IIS优化设置(包括PHP与静态化配置)

    帮助你更好的配置iis6.0,以便方便的运行asp和 asp.net。

    IIS性能优化

    IIS性能优化 IIS 性能优化是指提高 Internet Information Services(IIS)服务器性能的技术和方法,它是 web 服务器管理员和开发者不可或缺的一部分。IIS 作为微软公司出品的 Web 服务器软件,广泛应用于 Windows ...

    脱离IIS部署网站

    同时,性能可能不如IIS优化得那么好,因此可能需要对服务器进行性能调优。 总结来说,脱离IIS部署网站提供了更大的灵活性和控制权,但同时也需要开发者具备更多的系统管理知识,以确保应用程序的稳定运行。通过使用...

    XP sp3 IIS I386文件包

    对于xpIIS,可能是指在XP系统下特有的IIS优化或解决该系统中可能出现的问题。 【压缩包子文件的文件名称列表】:IIS_XPSP3可能是一个自解压文件或者包含了IIS安装的多个组件。通常,IIS的安装会包含多个文件,如msi...

    IIS性能调优IIS性能调优IIS性能调优

    ### IIS性能调优知识点详解 #### IIS6.0性能调试概述 IIS(Internet Information Services)是微软提供的一款Web...以上内容覆盖了IIS6.0性能调优的主要知识点,希望能够帮助读者深入了解IIS性能优化的方法和技术。

    IIS 网站服务器性能优化指南

    但配置、优化IIS的性能,使得网站访问性能达到最优状态却不是一件简单的事情,这里我就介绍一下如何一步一步的优化你的IIS服务器。  服务器端环境,我们以Windows Server 2003的IIS6.0为例,客户端环境为Mozilla ...

    IIS性能优化参考资源包

    【IIS性能优化参考资源包】是一份专为IT专业人士准备的资料集合,主要关注如何提升IIS6(Internet Information Services 6.0)的运行效率。这份资源包包含了四个核心文档,涵盖了从基础的性能调整到深入的元数据库...

    Win2003 IIS6.0性能优化指南

    在IIS优化方面,可以从以下几个方面入手: 1. 调整IIS的默认设置。IIS的保守默认配置可能限制了其性能的发挥。 2. 对于IIS中的Web服务器进行减负,可以通过调整应用程序池的设置、配置***设置和优化SQL Server内存...

    win2003优化设置

    六、IIS优化 6. IIS配置:对于运行Web服务的服务器,优化IIS设置至关重要。包括限制并发连接数、启用HTTP压缩、设置静态文件缓存等,都能显著提升IIS的响应速度。 七、安全优化 7. 安全策略:更新系统补丁,加强...

    IIS并发数测试,IIS并发数测试压力测试

    【IIS并发数测试】 ...通过以上知识点的测试和调整,可以优化IIS服务器的并发处理能力,为用户提供更流畅的服务体验。务必注意,此类测试仅应在自己的本地环境中进行,避免对他人服务器造成影响。

Global site tag (gtag.js) - Google Analytics