专栏首页SQL/ORACLEIIS7、IIS7.5中应用程序池最优配置方案

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

一、一般优化方案   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中可以查看到该设置:

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 元素:

[4] 将 processModel 元素替换为以下值:

[5] 保存并关闭 Machine.config 文件。   由原来的默认5000改为100000。

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” />

改为

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

[2] 打开C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsers\Default.browser,找到,注释部分,然后在命令行中运行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中添加如下配置:

复制代码 复制代码 复制代码 复制代码

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • IIS7的应用程序池

    最近将原来的系统迁移到IIS7.5上了,发现AspNetUpload只能运行在"程序程序池"的"经典"模式之下,采用"集成"模式后,AspnetUpload....

    菩提树下的杨过
  • Web.config中httpModules和httpHandlers的相关配置说明

    配置Modules和Handlers的时候,根据不同IIS的版本和应用程序池中不同的托管管道模式,在Web.config中也有不同的配置方式。

    小明爱学习
  • Web.config中httpModules和httpHandlers的相关配置说明

    Web.config中httpModules和httpHandlers的相关配置说明

    小明爱学习
  • IIS 7.5 解析错误 命令执行漏洞解决方案

    这篇文章主要介绍了IIS 7.5 解析错误 命令执行漏洞解决方案,需要的朋友可以参考下

    习惯说一说
  • 64位Win10系统配置IIS 7.0+PHP+Mysql

    用户1733354
  • 思路分享 | 从零模拟一次实战记录并成功提权

    前天下午,风和日丽,我呆呆的坐在电脑前,思考着我存在的意义。这时,大佬突然走进机房,扔给我了一个靶机,让我搞定它。瑟瑟发抖的我,也不敢问什么,扛着靶机来到了一个...

    7089bAt@PowerLi
  • 文末有靶机地址 | 从零模拟一次实战记录并成功提权

    前天下午,风和日丽,我呆呆的坐在电脑前,思考着我存在的意义。这时,大佬突然走进机房,扔给我了一个靶机,让我搞定它。瑟瑟发抖的我,也不敢问什么,扛着靶机来到了一个...

    7089bAt@PowerLi
  • Winserver下的Hyper-v “未在远程桌面会话中捕获到鼠标”

    异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 服务器相关的知识点:http://ww...

    逸鹏
  • 让服务器iis支持.apk.wgt .ipa文件下载的设置方法

    自从加菲猫开了VFP H5+ APP的课程之后,学员一个一个开始进入APP的世界,学员松松开始上架IOS应用了.有位学员说得好,自己厉害没有用,教别人厉害才是真...

    加菲猫的VFP
  • ASP.NET是如何在IIS下工作的

    ASP.NET与IIS是紧密联系的,由于IIS6.0与IIS7.0的工作方式的不同,导致ASP.NET的工作原理也发生了相应的变化。 IIS6(IIS7的经典模...

    古时的风筝
  • 异常:System.BadImageFormatException,未能加载正确的程序集XXX或其某一依赖项

    常:System.BadImageFormatException,未能加载正确的程序集XXX或其某一依赖项

    跟着阿笨一起玩NET
  • 记一次IIS劫持处置

    晚上十一点四十,刚准备休息,收到朋友电话,其一个站点被入侵篡改,导致某web接口异常,帮忙远程处理。

    FB客服
  • [渗透实战]第三方组件出奇迹(日常福利)

    本文章仅供学习交流使用,文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!

    用户1789928
  • ASP.NET MVC5请求管道和生命周期

    请求管道是一些用于处理HTTP请求的模块组合,在ASP.NET中,请求管道有两个核心组件:IHttpModule和IHttpHandler。所有的HTTP请求都...

    雪飞鸿
  • IIS7.5中神秘的ApplicationPoolIdentity

    IIS7.5中(仅win7,win2008 SP2,win2008 R2支持),应用程序池的运行帐号,除了指定为LocalService,LocalSystem...

    菩提树下的杨过
  • Windows Server2008中的IIS7的五大特性

    1、完全模块化的IIS 如果你非常熟悉流行的Apache Web server软件,那么你会知道它最大的优势就在于它的定制化,你可以把它配置为只能显示静态的...

    张善友
  • 【2013年】开发常见问题回顾(一)

    记录开发中遇到的和别人问的较多的问题.... IE10中LinkButton不可用     这应该是2013年初遇到的一个BUG,当使用Asp.Net开发Web...

    Porschev
  • HTTP状态码503错误该如何监控?怎么解决?

    503是一种HTTP状态码。英文名503 Service Unavailable是一种网页状态出错码。是网页程序没有相关的结果后返回的一种状态,这种错误是可以监...

    it妹
  • 在Windows 7/Server 2008 R2上部署asp.net 1.1程序

    .NET 1.1只有32位的,Windows Server 2008 R2只有64位的,可以通过WOW64运行32位应用程序,按照How to install ...

    张善友

扫码关注云+社区

领取腾讯云代金券