IIS6.0应用程序池回收和工作进程

转载 2013年06月11日 23:46:26

 

本文版权归 博客园 陈晨 所有,如有转载,请按如下方式显示标明原创作者及文章出处,以示尊重!!

作者:陈晨

原文出处:http://www.cnblogs.com/freshman0216/articles/1212460.html

      公司的一个网站程序长时间运行后,速度变慢,重新启动网站后速度明显变快,估计是网站程序占用的内存和CPU资源没能及时释放,才需要每隔一段时间重启网站释放资源。但手工重启总不能算解决问题的方法,怎样才能实现自动管理呢?IIS6.0的应用程序池自动回收功能可以解决这一问题。 

      应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置。因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不会受到其他应用程序池中应用程序所产生的问题的影响。

      为Web程序配置应用程序池需要以下步骤:1)创建应用程序池,右键单击“应用程序池”,“新建/应用程序池”,命名为KefuAppPool;2)为Web程序指定应用程序池,在网站虚拟目录属性“应用程序设置”里面的“应用程序池(N)”里选择KefuAppPool;3)应用程序池自动回收方式的设置。回收方式有如下几种:
      a.根据运行时间
       系统默认是1740分钟,也就是29个小时,这个不是很好控制,建议不用。

      b.请求数目
       这个要看具体的情况了。如果只有10个请求,可是有5个都在请求那个比较占资源的页面(可能是统计年度报表之类),这个时候就会出现进程当掉的情况,如果请求有1000个可是一个也没运行比较占资源的页面,这个时候进程肯定是很正常的,所以根据请求的数目来决定也不一定符合实际需要。

      c.计划的时间
       这个其实很好,不过具体什么时间回收好呢?通常我们都是设置在凌晨两三点钟,这个时候回收是有必要的,不过针对出现随时可能出现是高内存占用并不是很适用。

      d.内存(虚拟内存或已使用的内存)
       这个针对出现内存问题引起的进程当掉实在太合适了,不过设置多大的值比较好是一个很重要的问题,值不能太小了,否则如果访问量都很大超过这个值的时候也会自动回收,这个就很没必要了。一定要多多观察进程的实际占用情况再做决定。

       下面重点谈谈对工作进程回收应用程序池的理解。
       默认情况下,WWW服务建立“重叠回收”,即继续运行要终止的工作进程,直到启动新的工作进程后为止。 在重叠回收方案中,要回收的进程继续处理请求,同时 WWW 服务创建一个替代工作进程。在停止旧工作进程之前启动新的工作进程,然后将请求定向到新的进程。此设计可以防止服务中断,因为旧进程关闭前仍然保持与 HTTP.sys 的通信以处理请求。因为可重叠关闭或启动的关闭超时值是可以配置的,所以在工作进程仍在处理请求的同时可以终止该进程(如果它在时间限制内没有处理完请求的话)。
       注意:当 WWW 服务回收某个工作进程时,它并不断开现有的 TCP/IP 连接。HTTP 协议堆栈 (HTTP.sys) 建立并维护 TCP/IP 连接。
        
       IIS中的每个应用程序池由一个“工作进程”进行管理,也就是"W3wp.exe" 进程。如果有多个应用程序池中的程序运行,我们就能看到多个w3wp.exe。这点可以在任务管理器中看到,如下图所示,任务管理器中有两个w3wp.exe进程,恰好对应两个有应用程序在运行的应用程序池。
       

 
       在命令提示符下运行iisapp -a,可以查看w3wp.exe和哪个应用程序池关联。1)在任务管理器中增加显示pid字段;2)在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池。如上图左侧所示,应用程序池KefuAppPool和PID=3232的w3wp.exe相关联,应用程序池ReportServer和PID=3572的w3wp.exe相关联.

       下图显示了手动执行应用程序池KefuAppPool的回收,在回收前,回收中和回收后应用程序池和工作进程情况。我们注意到:回收过程中增加了一个工作进程(PID=3896),该工作进程(PID=3896)启动好后,旧的工作进程(PID=5716)才被停止,新工作进程(PID=3896)正式替代旧进程工作,这就很好的防止了应用程序池回收过程中服务被中断,保证了程序的连续运行。而其他两个应用程序池对应的工作进程PID都没用变。该图很好的展示了应用程序池回收的过程。


       补充说明(2008-07-26更新):

       IIS应用程序池自动回收机制给我们带来便利的同时,也会造成潜在的问题。编写依赖于Global文件中全局事件的函数时我们要特别注意了,尤其是每天定时执行的函数,因为重新启动IIS应用程序池后,如果没有用户访问网站,则无法激活Application_Start事件,函数也就无法执行了。

IIS6.0应用程序池回收设置分析

内容提要:IIS6.0应用程序池回收设置分析,这段时间公司的程序经常出现问题,然后整个应用程序就不能访问了,我们的服务器版本:window 2003 SP1,IIS6.0,没有安装Microsoft ...
  • pi19740306
  • pi19740306
  • 2015年01月19日 16:47
  • 469

IIS6 应用程序池的配置

应用程序池的配置 要点 只有在工作进程隔离模式下运行时才能使用这个 IIS 6.0 功能。 应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置。因为应用程序池中的应用程...
  • kirawoo
  • kirawoo
  • 2015年07月10日 22:07
  • 3301

IIS应用程序池回收图文详解

转:http://blog.sina.com.cn/s/blog_8677fcaa010138uf.html
  • jackljf
  • jackljf
  • 2014年07月09日 08:37
  • 2334

IIS6.0应用程序池回收和工作进程

IIS6.0应用程序池回收和工作进程 公司的一个网站程序长时间运行后,速度变慢,重新启动网站后速度明显变快,估计是网站程序占用的内存和CPU资源没能及时释放,才需要每隔一段时间重启网站释放资源。...
  • lanyueliang2008
  • lanyueliang2008
  • 2013年03月01日 14:24
  • 270

IIS应用程序池自动回收问题的解决办法

 IIS可以设置定时自动回收,默认回收是1740分钟,也就是29小时。IIS自动回收相当于服务器IIS重启,应用程序池内存清空,所有数据被清除,相当于IIS重启,在快速开发平台服务器端,为了减小...
  • proglovercn
  • proglovercn
  • 2016年04月28日 21:36
  • 3634

IIS假死的解决方法 缩短IIS应用池回收时间来实现减少IIS假死

IS日志:   应用程序:ISAPI 'C:\WINDOWS\system32\inetsrv\asp.dll' 报告它自身有问题,原因如下: 'ASP 不正常,因为执行请求的 100% 被挂起,...
  • learner198461
  • learner198461
  • 2015年08月27日 09:43
  • 4860

应用程序池的配置

今天,突然发现患了服务器之后,网页的刷出速度更慢了,想了想这些服务器的性能比原来的服务器更好,但是为什么网页的速度却比原来的更加慢了啊? 有人说是可能是应用程序池的个数更加多的原因。具体的自己还不是...
  • u010924878
  • u010924878
  • 2015年12月11日 18:37
  • 894

对于IIS上的应用程序池监控

最近公司的 运维碰到了一些问题,在客户某台服务器(系统为2003,IIS版本为6.0)上某个比较重要的应用程序池会不定期的停止,原因未知。这样就影响了服务的运行。 运维启动应用程序池后问题解决,但是因...
  • zx75991
  • zx75991
  • 2016年08月26日 15:13
  • 898

Server_应用程序池;

简介 这是微软的一个全新概念:应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置。因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不会受到其...
  • u011168154
  • u011168154
  • 2014年06月28日 23:48
  • 924

优化IIS应用程序池防止iis假死

服务器经常产生“应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制。进程 ID 是 '2068'。”的错误,导致iis处于假死状态,经了解是IIS应用程序池的设置问题。解决...
  • jqrsdsy
  • jqrsdsy
  • 2014年03月03日 15:30
  • 16705
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IIS6.0应用程序池回收和工作进程
举报原因:
原因补充:

(最多只允许输入30个字)