回收应用程序池



8.4.1  回收应用程序池

使用IIS 5.0时,如果一个运行于低隔离模式或运行于中隔离模式的Web网站发生了一次失效,那么重启网站的唯一方法就是重启整个IIS。这样做会导致IIS突然停止服务,所以,在重启过程中到达的请求都将发生失效。

IIS 6.0引入了一种革命性的概念,即重叠处理的概念。基于重叠处理的概念,即使一个应用程序池被回收,所有后来到达的请求仍然可以继续得到服务。IIS 7.0仍然支持这个概念。如果某个应用程序池被回收,那么现有的工作进程并没有马上退出,而是启动第二个工作进程,一旦第二个工作进程启动成功,Http.sys随即将所有的新请求发送给这个新的工作进程。当现有的工作进程处理完所有请求之后即关闭退出。因为Http.sys可以在将到达的请求发送给新的工作进程之前,完成对已到达请求进行排队处理的操作,因此,在回收应用程序池的过程中,不会发生丢失页面请求的现象。

图8-5解释了DefaultAppPool在回收时的情况。注意:当PID为3168的进程已经启动时,一个PID为3920的老进程仍然在运行。只有当PID为3168的新进程处于Running状态时,新的请求才会被发送给这个进程。因此,在短暂时间内,当我们刷新IIS Manager时,可能会看到PID为3168的进程处于Running状态,同时,PID为3920的进程处于Stopping状态。

 
(点击查看大图)图8-5

尽管在回收应用程序池的过程中不会发生页面请求丢失现象,也不会出现页面请求发生失效的情况,但是对回收过程而言,确实可能存在不良影响,这是因为在回收应用程序池的过程中,所有保存在工作进程中的数据都将丢失。默认情况下,ASP.NET保存了会话状态数据和进程内缓存数据(我们称之为InProc数据)。这些数据的有效时间与工作进程的存活时间完全相同,因此在回收应用程序池的过程中,必须重新创建这些数据。所以,必须考虑在进程外保存会话状态数据。可以在StateServer、SqlServer,或其他外部会话状态存储区中保存会话状态数据。此外,当启动一个新的工作进程时,可能会发生加载性能问题。此时,IIS和ASP.NET的各个方面内容都必须加载到工作进程中,因此总的来说加载时间还是比较长的,常常需要耗费几秒钟的时间。因此,与应用程序池正常运行情况相比,应用程序池回收之后运行的第一个页面常常要花费更多时间才能正常运行。

进程重叠功能为管理员提供了前所未有的支持。这也意味着:在回收一个应用程序池的过程中,我们只会受到极小的不良影响。特别是当会话状态处于未使用的情况下,或会话状态数据保存在进程外的情况下,影响会更小一些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IIS应用程序回收是指IIS(Internet Information Services)在一定条件下自动终止和重新启动应用程序的过程。 应用程序是IIS中一个独立的进程,在运行网站时负责处理HTTP请求,并将静态或动态内容返回给客户端。由于长时间运行或资源占用过多,应用程序可能出现问题,导致网站响应缓慢甚至崩溃。 为了确保网站的性能和稳定性,IIS提供了应用程序回收功能。当满足以下条件之一时,IIS会自动回收应用程序: 1. 配置更改:修改了应用程序的相关设置,例如CPU占用限制、内存限制等。 2. 定时回收:设定了应用程序的闲置时间或过期时间,超过指定时间没有请求访问应用程序时,IIS会自动回收它。 3. 内存限制:当应用程序使用的物理内存超过了设定的限制时,IIS会回收应用程序。 4. CPU限制:当应用程序的CPU使用率超过限制值时,IIS会回收应用程序。 5. 请求失败:当应用程序连续多次失败或崩溃时,IIS会回收它。 在回收过程中,IIS会终止应用程序中的运行中的进程,并且清除内存中的所有对象。然后,IIS会重新启动应用程序,以确保网站继续正常运行。 应用程序回收是IIS中一个关键的功能,它可以提高网站的性能和稳定性。但是,频繁的回收可能会导致一定的延迟,因此需要根据实际情况进行合理的配置和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值