优化IIS7.5支持10万个同时请求的配置方法

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

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

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

今天下午17点左右,博客园博客站点出现这样的错误信息:

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。

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文件运行就可以了,需要手工的自己操作

#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。

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

(0)

相关推荐

  • 微信公众平台开发之配置与请求

    一.配置参数 define('WEIXIN_APPID', 'wxzzzzzzzz'); define('WEIXIN_APPSECRET', 'ouewjdsaudsamkh'); define('WEIXIN_TOKEN', '9973833232232'); define('WEIXIN_NOTIFY_URL', 'http://xx.com/xx/xx'); define('WEIXIN_MCHID', '322221121'); define('WEIXIN_KEY', 'xddsds

  • asp.net 在处理向该请求提供服务所需的配置文件时出错

    各位,今天遇到了个错误:程序为net3.5 其他的页面都可以使用,唯独有2两个页面提示下面的错误: 复制代码 代码如下: "/pdd"应用程序中的服务器错误. -------------------------------------------------------------------------------- 配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息并适当地修改配置文件. 分析器错误消息: 在应用程序级别之外使用注册为 all

  • 处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题

    [详细错误]:HTTP 错误 500.0 - Internal Server ErrorC:\Program Files\PHP\php-cgi.exe - FastCGI 进程超过了配置的请求超时时限[环境]:php + IIS7.5解决办法:方法一:C:\Windows\System32\inetsrv\config\applicationHost.config 进行编辑,将activityTimeout设置调大,默认为600(10分钟),最大支持3600(1小时),单位秒~ 方法二:开始-

  • 由于扩展配置问题而无法提供您请求的页面错误解决方法

    因为做一个下载程序,需要用到URL的下载. 于是自己试着在浏览器中打开Main.ini这样一个文件,于是浏览器报错: HTTP 错误 404.3 NOT FOUND 由于扩展配置问题而无法提供您请求的页面.如果该页面是脚本,请添加处理程序.如果应下载文件,请添加MIME映射. 解决方法: 打开IIS->网站->功能视图->MIME类型,如图: 双击进去,配置相应的值即可:

  • IIS7完全攻略之失败请求跟踪配置

    失败请求跟踪可以在两个级别进行配置: - 在站点级别,可以启用或禁用跟踪并配置日志文件设置. - 在应用程序级别,可以指定捕获跟踪事件时的失败条件,同时还可以配置应在日志文件条目中捕获的跟踪事件. (一)查看失败请求跟踪规则的列表 若要管理失败请求的跟踪规则,可以查看包含特定配置级别所有失败请求跟踪规则的列表.可以按路径.关联的跟踪提供程序.HTTP 状态代码.处理请求所用的时间或范围(本地或继承)对该列表进行排序.此外,还可以按范围对规则进行分组,以便快速查看哪些规则适用于当前配置级别,以及哪

  • 优化IIS7.5支持10万个同时请求的配置方法

    通过对IIS7的配置进行优化,调整IIS7应用池的队列长度,请求数限制,TCPIP连接数等方面,从而使WEB服务器的性能得以提升,保证WEB访问的访问流畅. IIS7.5是微软推出的最新平台IIS,性能也较以前有很大的提升,但是默认的设置配不适合很大的请求.但是我们可以根据实际的需要进行IIS调整,使其性能更佳,支持同时10万个请求. 以下方案,通过对IIS7的配置进行优化,调整IIS7应用池的队列长度,请求数限制,TCPIP连接数等方面,从而使WEB服务器的性能得以提升,保证WEB访问的访问流

  • 让Win2008+IIS7+ASP.NET支持10万并发请求

    今天下午17点左右,博客园博客站点出现这样的错误信息: 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 Erro

  • 利用Python发送 10 万个 http 请求

    目录 1.队列+多线程 2.线程池 3.协程 + aiohttp 4.grequests[1] 前言: 假如有一个文件,里面有 10 万个 url,需要对每个 url 发送 http 请求,并打印请求结果的状态码,如何编写代码尽可能快的完成这些任务呢? Python 并发编程有很多方法,多线程的标准库 threading,concurrency,协程 asyncio,当然还有 grequests 这种异步库,每一个都可以实现上述需求,下面一一用代码实现一下,本文的代码可以直接运行,给你以后的并发

  • windows 10下解压版MySql安装配置方法教程

    windows 10 下安装解压版的MySql数据库 第一步:解压zip文件到(我的)D:\MyGreenSoftware\mysql-5.7.10-winx64 第二步:添加环境变量(Windows 10 操作系统):右键计算机->属性->高级系统设置->环境变量 找到path 然后编辑path在末尾添加 ;D:\MyGreenSoftware\mysql-5.7.10-winx64\bin 第三步:添加配置文件,在MySQL的解压的目录(例如我的是D:\MyGreenSoftware

  • 让Apache支持cgi、SSI、shtml的配置方法

    1.首先明确,只能够指定某个确定的目录,支持cgi,即运行该目录执行cgi程序:否则不太安全.寻找: 复制代码 代码如下: #    # "C:/Program Files/Apache Group/Apache/cgi-bin" should be changed to whatever your ScriptAliased    # CGI directory exists, if you have that configured.    #    <Directory &q

  • IIS7、iis7.5中禁止缓存单个静态文件的配置方法

    IIS7中,想将一个经常修改的静态文件设置为不可缓存,在IIS配置界面里怎么也找不到... 一番google之后在stackoverflow里边发现了这样一段回答,最终解决了问题: 一.单个文件的禁止缓存的方法 just stumbled across this question; you can use the following to disable the cache on a specific file: 偶尔看到这个问题,你可以通过下面的方法来对单个文件进行禁止缓存 <configur

  • 让Apache支持shtml实现include文件解析的配置方法

    1. 确认加载include.so模块,将注释去掉: LoadModule include_module libexec/apache2/mod_include.so 2. AddType部分去掉这两段注释: AddType text/html .shtml AddOutputFilter INCLUDES .shtml 3. Directory目录权限里面找到 Options Indexes FollowSymLinks 增加Includes修改为: Options Indexes Follo

  • iis7 iis8反向代理规则编写、安装与配置方法

    目的:把A站当做B站二级目录 如: http://www.baidu.com等于/baidu/ http://www.qq.com等于http://www.6ke.com.cn/qq/ 1.安装64位URLIIS7重写rewrite 2.安装requestRouter_amd64.msi 安装步骤 1. IIS的版本是7.5.7600.16385. 2. 关闭相关服务. net stop was /y net stop wmsvc /y 第二个服务没有开. 3. 手动安装ARR的依赖项. a)

  • PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享

    对于学习php的新手,由于网上的配置方法都是很久之前的,及时性不高,环境配置往往令人很头疼,我初学php配置环境时配置了3个晚上,每次总是会出现这样或那样的问题,如今把最新版的PHP5.5.15+Apache2.4.10+MySQL5.6.20,win7x86的配置方法分享给大家,64位的同理,不过下载的软件需要也是64位的. 环境:win7 32.(64位的同理,下载相关软件必须是对应的64位版本) PHP5.5.15(php-5.5.15-Win32-VC11-x86.zip) Apache

  • 详解mybatis批量插入10万条数据的优化过程

    数据库 在使用mybatis插入大量数据的时候,为了提高效率,放弃循环插入,改为批量插入,mapper如下: package com.lcy.service.mapper; import com.lcy.service.pojo.TestVO; import org.apache.ibatis.annotations.Insert; import java.util.List; public interface TestMapper { @Insert("") Integer test

随机推荐