问题记录IIS配置项
Posted One To One
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了问题记录IIS配置项相关的知识,希望对你有一定的参考价值。
起因:
由于之前项目中出现过内存占用较高情况,为了保障业务不因程序问题导致停止;需要实现对进程资源占用限制。
需要利用IIS相关功能实现,所以对IIS相关配置多一些了解。
主要对以下高级设置重点项了解:包含:
网站高级配置:
进程池高级设置:
一、IIS重点配置项目:
-
连接数
连接数概念:
[1] 浏览者访问站点,必需与站点通过TCP协议,建立连接。这个连接在从服务器上读取信息时存在,读取结束时,一般即自动关闭。所以,当一个页面已经完全地显示在客户端的显示器上时,使用的连接也许已经关闭了。
[2] 每个浏览者,访问某站点时,可能会占用1-3多个连接,这是由计算机自动处理的,这样做的目的是为了加快速度。所以,对于连接数为30的基础型主机而言,有时只能十几个人访问。
[3] 虽然服务器中可以规定每个站点的最大连接数,但同时也存在服务器的总计最大连接数。所以,即使规定用户站点的最大连接数为不限,当服务器达到了最大连接数时,仍不能访问站点。而服务器的最大连接数一般在1000—2000。
点击“网站”->“功能视图”->“限制...“->“编辑网站限制”
限制连接数(N)即为虚拟主机供应公开的IIS连接数标准;该梳理受服务器连接数量影响
-
最大并发连接数
最大并发连接数:允许并发连接的最大数目,可以看到当前默认值为:【4294967295】
那么IIS就能支持这么大的并发?——当然不是。
例如:当1000个并发请求,如果最大并发连接数设置为500,那么情况为:500个立即返回503,剩下500个请求慢慢返回。
最大并发连接数还受:队列数量、最大并发工作线程数影响
-
最大并发工作线程
IIS同时处理的工作线程数量,该数量在IIS中未找到对应的设置界面。win7系统的IIS的值是10,VS2012自带的IIS Express的值是80
例如:当前IIS最大并发工作线程为10,当1000个并发请求时;10个请求就会立即被处理,其他的990请求则进入队列中排队。
-
队列长度
当前请求允许最大排队数量,默认值:1000
最后总结下:最大并发连接数、最大并发工作线程、队列长度之间的关系:
最大并发连接数= 最大并发工作线程 + 队列长度
例如:当最大并发工作线程为:20、队列长度为500时,当为并发请求1000时:其中480个请求会立即返回503错误,500个加入队列等待、20个立即进行处理
-
最大工作进程数
可以用来处理应用程序池的最大工作进程数量:例如设置5后会启动5个进程处理请求:
最大工作进程数的设置方法:按照每工作进程能承载30个并发的原则来确定应用程序池的最大工作进程数。同时要注意,每个工作进程大约会占用20M(如上图,可能系统不同存在差异)左右的系统内存,在设置最大工作进程数的时候,要主要最大工作进程数与20M的乘积不要超过系统最大可用内存数。
大多数应用系统都存在工作时间使用量高、非工作时间使用量低的情况,针对这种现象,在系统非忙时应合理的释放操作系统资源,因此,应合理设置应用程序池的【限制超时】和【回收时间间隔】属性
-
回收设置:
用于设置进程池回收条件主要包含:固定时间回收、请求数量达到回收、虚拟限制(虚拟、专用)达到回收、指定时间回收等。
本次主要设置专用内存限制:
二、高并发请求配置优化:
例如IIS支持10w并发请求配置:
1、调整IIS的应用程序池队列长度:
选择你相应网站所使用的应用程序池,将原来的队列长度由1000改为65535。当然这里的队列长度你可以根据自己的访问用户*1.5来设置,例如:你有2000用户,你此处就可以设置为3000(3000=2000用户数*1.5)
2、调整IIS的appConcurrentRequestLimit值
打开命令行:
c:\\Windows\\System32\\inetsrv\\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000
查看配置文件中是否添加:C:\\Windows\\System32\\inetsrv\\config\\applicationHost.config
3、 调整machine.config中的processModel>requestQueueLimit的设置
打开该文件: %systemroot%\\Microsoft.Net\\Framework64\\v4.0.30319\\CONFIG\\machine.config
找到如下所示的 processModel 元素:<processModel autoConfig="true" />
将 processModel 元素替换为以下值:<processModel enable="true" requestQueueLimit="100000" />
4、修改系统注册表:最多同时连接10w个TCP连接:
reg add HKLM\\System\\CurrentControlSet\\Services\\HTTP\\Parameters /v MaxConnections /t REG_DWORD /d 100000
5、应用修改配置:
net stop http & net start http & iisreset
三、总结:
1、IIS最大并发数限制:最大并发连接数= 最大并发工作线程 + 队列长度
2、最大进程数:需要根据系统资源情况,合理设置数量;并应合理设置应用程序池的【限制超时】和【回收时间间隔】属性进行资源释放
3、回收设置合理的使用能保证服务不停机,影响业务系统。
参考:
IIS
以上是关于问题记录IIS配置项的主要内容,如果未能解决你的问题,请参考以下文章