ISAPI多进程设置

IIS默认配置下采用的是单工作进程的工作模式,也就是只启用一个w3wp.exe进程处理所有请求,然后进程内启用多个线程来处理并发请求,最大工作线程数由具体的操作系统和IIS来决定,当并发量大于线程数时则会让请求排队等待处理。这是面对高并发量,且部分请求处理耗时较长时就会造成大部分请求长期处于挂起的状态,用户感知就是慢,TMD慢。。。。

WebGarden其实就是IIS的多工作进程的工作模式。

开启WebGarden是不是很简单呢?那问题落在到底maxWorkerProcesses设置多少才适合呢?一般建议设置为“逻辑核数”即可。

WebGarden的目的是针对大量长链接的情景,通过增加工作进程来增加可用的工作线程。

另外,我想大家都有过这样的经历。maximum worker processes为1时,并发量上扬时w3wp.exe所占的内存(专用工作集/专用字节)会急速上升,当所占内存接近2GB时响应延时就变得十分严重,唯一的办法就是等待、等待、等待。。。。。。要不就回收进程释放内存,但这时会中断用户的请求。

那为什么会这样呢?

1. 首先需要明确的是 工作线程 对应 请求 是一一对应的,因此当接收到N个请求时,就会开启N个工作线程处理请求,若请求量超过最大工作线程数时则会让请求排队;

2. 线程本身也占内存资源,就线程栈空间而言,IIS5/6每个线程栈空间就占256KB,而Windows Server 2000下则占1MB。对于Windows Server 2008下的IIS7而言,32bit则占256KB,64bit则占512KB。极端情况下即使新开的线程所处理的程序入参和局部变量只使用1KB,但线程栈依然会占512KB。更不用说程序中还用到大量堆空间的对象了;

3. 进程是分配内存资源的最小单位,也就所有工作线程均使用同一块内存空间,更重要的是所有工作线程采用同一套GC机制,那么当执行GC时将挂起所有工作线程;

4. 虽然Windows Server2008 64Bit对进程所占的内存空间没有设置上限,但若进程所占内存空间大且托管堆中含大量一次性对象那么必然会引起频繁的GC操作。(极端情况下GC占进程的执行时间片的48%左右)

也就是我们通过“任务管理器”查看w3wp.exe内存占用率升高时,响应延时增大的根本原因是:工作进程中托管堆存在大量临时对象,导致频繁执行GC操作,而GC操作执行时会挂起所有工作线程,导致请求处理的延时增大。

而WebGarden就是将工作线程均匀分配到多个工作进程中,那么各工作进程所占用的内存相对较少,减少GC操作和每次GC执行的时间,并且即使执行GC操作也不会挂起所有工作线程,从而提供并发处理量。

ISAPI多进程设置的更多相关文章

  1. IIS下Asp.Net应用程序多进程设置及Session共享

    背景: 目前项目中在单个进程的应用程序经常会遇到w3c.exe崩溃的情况,于是就设想是否可以通过IIS多进程的方案来避免出现该问题. 于是搜了下“怎么实现多进程的方案”,找到了这篇文章:http:// ...

  2. 爬虫链接mongodb 以及多线程多进程的操作

    一.连接mongodb 1.            设置数据库 client=pymongo.MongoClient(‘localhost’) 2.            db=client[‘lag ...

  3. 爬虫连接mongodb、多线程多进程的使用

    一.连接mongodb 1.            设置数据库 client=pymongo.MongoClient(‘localhost’) 2.            db=client[‘lag ...

  4. 缓存Cache

    转载自  博客futan 这篇文章将全面介绍有关 缓存 ( 互动百科 | 维基百科 )cache以及利用PHP写缓存caching的技术. 什么是缓存Cache? 为什么人们要使用它? 缓存 Cach ...

  5. Web 技术人员需知的 Web 缓存知识(转)

    最近的译文距今已有4年之久,原文有一定的更新.今天踩着前辈们的肩膀,再次把这篇文章翻译整理下.一来让自己对web缓存的理解更深刻些,二来让大家注意力稍稍转移下,不要整天HTML5, 面试题啊叨啊叨的~ ...

  6. ASP.NET页面与IIS底层交互和工作原理详解

    转载自:http://www.cnblogs.com/lidabo/archive/2012/03/13/2393200.html 第一回: 引言 我查阅过不少Asp.Net的书籍,发现大多数作者都是 ...

  7. HttpModule和Http Handler (比较与区别)

    HttpModule和Http Handler (比较与区别) HttpModule概述 暂时先不考虑我们自己实现Http Module的情况.在.Net中,Http Module 是实现了IHttp ...

  8. ASP.NET MVC3 系列教程 - 部署你的WEB应用到IIS 6.0

    I:ASP.NET MVC3 部署的前期工作 1.确认部署的服务器操作系统环境 首先我们确认服务器的操作系统版本 可以从系统命令行工具里输入: systeminfo 获取相关操作系统信息例如 然后再确 ...

  9. ASP.NET页面与IIS底层交互和工作原理详解(第二回)

    引言 在 Part.1 Http请求处理流程 一文中,我们了解了Http请求的处理过程以及其它一些运作原理.我们知道Http管道中有两个可用接口,一个是IHttpHandler,一个是IHttpMod ...

随机推荐

  1. ArcGIS 卷帘效果

    一直没注意ArcGIS自带了卷帘功能,使用方法:调出Effects工具条,里面就有卷帘工具. AE开发参考: http://bbs.esrichina-bj.cn/esri/viewthread.ph ...

  2. Flink运行在yarn上

    在一个企业中,为了最大化的利用集群资源,一般都会在一个集群中同时运行多种类型的 Workload.因此 Flink 也支持在 Yarn 上面运行: flink on yarn的前提是:hdfs.yar ...

  3. 51Nod1766 树上的最远点对 ST表 LCA 线段树

    原文链接https://www.cnblogs.com/zhouzhendong/p/51Nod1766.html 题目传送门 - 51Nod1766 题意 n个点被n-1条边连接成了一颗树,给出a~ ...

  4. 爬虫3 requests基础之 乱码编码问题

    import requests res = requests.get('http://www.quanshuwang.com') res.encoding = 'gbk' print(res.text ...

  5. css3流动布局

    -webkit-box-ordinal-group: 2;1...布局优先显示 display: -webkit-box;盒子 -webkit-box-orient:horizontal;显示方式 - ...

  6. POJ 3258 River Hopscotch (最大最小距离)【二分】

    <题目链接> 题目大意:现在有起点和终点两个石块,这两个石块之间有N个石块,现在对这N个石块移除M个石块,使得这些石块之间的最短距离最大,注意,起点和终点这两个石块不能被移除. 解题分析: ...

  7. 重温分布式系统的CAP理论

    1. CAP理论的历史 2000年7月,Eric Brewer教授提出CAP猜想:2年后,Seth Gilbert和Nancy Lynch从理论上证明了CAP:之后,CAP理论正式成为分布式计算领域的 ...

  8. linux 学习笔记 mysql安装总结

    1 安装方式 下载2禁制源码安装包 mysql-5.5.27-linux2.6-i686.tar.gz 备注:2禁制额包解压缩后直接就可以使用 不用Make 2 步骤 shell>groupad ...

  9. mysql主从配置和galera集群

    mariadb主从 主从多用于网站架构,因为主从的同步机制是异步的,数据的同步有一定延迟,也就是说有可能会造成数据的丢失,但是性能比较好,因此网站大多数用的是主从架构的数据库,读写分离必须基于主从架构 ...

  10. Codeforces.662C.Binary Table(状压 FWT)

    题目链接 \(Description\) 给定一个\(n\times m\)的\(01\)矩阵,你可以选择一些行和一些列并将其中所有的\(01\)反转.求操作后最少剩下多少个\(1\). \(n\le ...