【问题记录】IIS配置项

摘要:
需要利用IIS相关功能实现,所以对IIS相关配置多一些了解。主要对以下高级设置重点项了解:包含:网站高级配置:进程池高级设置:一、IIS重点配置项目:连接数连接数概念:[1]浏览者访问站点,必需与站点通过TCP协议,建立连接。所以,即使规定用户站点的最大连接数为不限,当服务器达到了最大连接数时,仍不能访问站点。

起因:

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

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

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

网站高级配置:

【问题记录】IIS配置项第1张

进程池高级设置:

【问题记录】IIS配置项第2张

一、IIS重点配置项目:

  • 连接数

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

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

【问题记录】IIS配置项第3张

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

  • 最大并发连接数

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

【问题记录】IIS配置项第4张

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

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

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

  • 最大并发工作线程

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

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

  • 队列长度

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

【问题记录】IIS配置项第5张

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

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

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

  • 最大工作进程数

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

【问题记录】IIS配置项第6张

【问题记录】IIS配置项第7张

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

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

  • 回收设置:

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

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

【问题记录】IIS配置项第8张  

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

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

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

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

【问题记录】IIS配置项第9张

2、调整IIS的appConcurrentRequestLimit值

打开命令行:

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

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

【问题记录】IIS配置项第10张

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配置项》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vue页面是否缓存的两种方式在ThreadPool.QueueUserWorkIte 的回调函数中发生未处理异常导致了应用程序重启下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CI框架入门笔记

PS - 个人博客原文:CI框架入门笔记 当前(2019-03-22)CodeIgniter 框架的最新版本是 3.1.5,于2017年6月发布,距今快两年了也没有更新,这与 Laravel 的更新速度相比差距太大了。因为确实,它是一个很古老的框架了(第一个版本在2006年发布),当初的设计原则,开发环境与现在都已经大为不同。它有自己的设计原则,有相配套的...

Git查看与修改用户名、邮箱

用户名和邮箱的作用:   用户名和邮箱地址相当于你的身份标识,是本地Git客户端的一个变量,不会随着Git库而改变。   每次commit都会用用户名和邮箱纪录。   github的contributions跟你的邮箱是有关联的。 查看自己的用户名和邮箱地址:   $ git config user.name   $ git config user.ema...

webpack 4.0 配置文件 webpack.config.js文件的放置位置

  一般webpack.config.js是默认放在根目录的,不在根目录的时候需要在package.json中制定位置,我的配置文件目录是config/webpack.config.js,在package.json文件中的配置为: "scripts": { "build": "webpack --mode production --config ./...

配置文件入门 WebConfig.config常用配置节点介绍

  一、配置文件入门   .Net提供了一种保存项目配置信息的办法,就是利用配置文件,配置文件的后缀一般是.config。在WinForm程序中配置文件一般是App.config。在Asp.net中一般默认是web.config。   一个.config配置文件都是基于XML的文本文件,并且可以保存到Web应用程序中的任何目录中。在发布Web应用程序时we...

HTML中data自定义属性的使用和插件应用

大家可能会经常看到一些HTML里都带有data属性,这些都是HTML5的自定义属性,可以做很多事情,直接调用JS十分方便,虽然是HTML5的属性,但好在jQuery通用的,所以基本在所有浏览器里都是可以正常使用的,包括低版本的IE。下面为大家简单介绍一下使用方法: 1、简单使用 <div id="widget"data-text="123456"&...

查看sql server数据库连接情况

1.通过系统的“性能”来查看:开始->管理工具->性能(或者是运行里面输入 mmc)然后通过添加计数器添加 SQL 的常用统计(MSSQL General Statistics) 然后在下面列出的项目里面选择 用户连接(User Connection) 就可以时时查询到sql server数据库连接数了。 2.通过系统表来查询: 查询数据库当前...