IIS配置项和支持10W高并发请求优化

起因:

 由于之前项目中出现过内存占用较高情况,为了保障业务不因程序问题导致停止;需要实现对进程资源占用限制。

 需要利用IIS相关功能实现,所以对IIS相关配置多一些了解。.

 主要对以下高级设置重点项了解:包含:

  网站高级配置:

  IIS配置项和支持10W高并发请求优化

  进程池高级设置:

  IIS配置项和支持10W高并发请求优化

一、IIS重点配置项目:

  • 连接数

   连接数概念:
   [1] 浏览者访问站点,必需与站点通过TCP协议,建立连接。这个连接在从服务器上读取信息时存在,读取结束时,一般即自动关闭。所以,当一个页面已经完全地显示在客户端的显示器上时,使用的连接也许已经关闭了。
   [2] 每个浏览者,访问某站点时,可能会占用1-3多个连接,这是由计算机自动处理的,这样做的目的是为了加快速度。所以,对于连接数为30的基础型主机而言,有时只能十几个人访问。
   [3] 虽然服务器中可以规定每个站点的最大连接数,但同时也存在服务器的总计最大连接数。所以,即使规定用户站点的最大连接数为不限,当服务器达到了最大连接数时,仍不能访问站点。而服务器的最大连接数一般在1000—2000。

   点击“网站”->“功能视图”->“限制...“->“编辑网站限制”

   IIS配置项和支持10W高并发请求优化

   限制连接数(N)即为虚拟主机供应公开的IIS连接数标准;该梳理受服务器连接数量影响

  • 最大并发连接数

   最大并发连接数:允许并发连接的最大数目,可以看到当前默认值为:【4294967295】

  IIS配置项和支持10W高并发请求优化

  那么IIS就能支持这么大的并发?——当然不是。

  例如:当1000个并发请求,如果最大并发连接数设置为500,那么情况为:500个立即返回503,剩下500个请求慢慢返回。

  最大并发连接数还受:队列数量、最大并发工作线程数影响 

  • 最大并发工作线程

   IIS同时处理的工作线程数量,该数量在IIS中未找到对应的设置界面。win7系统的IIS的值是10,VS2012自带的IIS Express的值是80

  例如:当前IIS最大并发工作线程为10,当1000个并发请求时;10个请求就会立即被处理,其他的990请求则进入队列中排队。

  • 队列长度

   当前请求允许最大排队数量,默认值:1000

  IIS配置项和支持10W高并发请求优化

  最后总结下:最大并发连接数、最大并发工作线程、队列长度之间的关系:

   最大并发连接数= 最大并发工作线程 + 队列长度

  例如:当最大并发工作线程为:20、队列长度为500时,当为并发请求1000时:其中480个请求会立即返回503错误,500个加入队列等待、20个立即进行处理

  • 最大工作进程数

  可以用来处理应用程序池的最大工作进程数量:例如设置5后会启动5个进程处理请求:

  IIS配置项和支持10W高并发请求优化

IIS配置项和支持10W高并发请求优化 

   最大工作进程数的设置方法:按照每工作进程能承载30个并发的原则来确定应用程序池的最大工作进程数。同时要注意,每个工作进程大约会占用20M(如上图,可能系统不同存在差异)左右的系统内存,在设置最大工作进程数的时候,要主要最大工作进程数与20M的乘积不要超过系统最大可用内存数。

  大多数应用系统都存在工作时间使用量高、非工作时间使用量低的情况,针对这种现象,在系统非忙时应合理的释放操作系统资源,因此,应合理设置应用程序池的【限制超时】和【回收时间间隔】属性

  • 回收设置:

  用于设置进程池回收条件主要包含:固定时间回收、请求数量达到回收、虚拟限制(虚拟、专用)达到回收、指定时间回收等。

  本次主要设置专用内存限制:

  IIS配置项和支持10W高并发请求优化   

二、高并发请求配置优化:

 例如IIS支持10w并发请求配置:

 1、调整IIS的应用程序池队列长度:

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

  IIS配置项和支持10W高并发请求优化

 2、调整IIS的appConcurrentRequestLimit值

  打开命令行:

c:\Windows\System32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000

  查看配置文件中是否添加:C:\Windows\System32\inetsrv\config\applicationHost.config

  IIS配置项和支持10W高并发请求优化

 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、回收设置合理的使用能保证服务不停机,影响业务系统。