IIS 8.5 中的空闲工作进程页出

作者:Gary Ericson

在 IIS 8.5 中,管理员可以选择暂停空闲的工作进程,而不是将其终止。

兼容性

版本 说明
IIS 8.5 和更高版本 IIS 8.5 中引入了空闲工作进程页出。
IIS 8.0 和更低版本 IIS 8.5 之前的版本不支持空闲工作进程页出。

问题

Windows Server 2012 上的 Internet Information Services (IIS) 为管理员提供使指定时间段内处于空闲状态的工作进程超时的选项。 对于不经常访问的站点来说,这是一个很好的选择,因为可以在站点空闲时释放系统资源。 缺点是下次访问站点时,用户需要等待工作进程再次启动。

解决方案

在 IIS 8.5 及更高版本中,管理员可以选择挂起空闲的工作进程,而不是将其终止。 挂起的工作进程虽保持活动状态,但已页出到磁盘,从而减少其消耗的系统资源。 当用户再次访问站点时,工作进程会从挂起状态唤醒并快速可用。 当空闲工作进程终止时,工作进程将关闭,并且随后访问站点时,启动期将更长。 终止进程是默认行为,也是 IIS 8.5 之前的早期版本的 IIS 中使用的相同行为。

可以为单个应用程序池配置 idleTimeoutAction 属性,也可以针对所有应用程序池将其配置为默认值。

分步说明

为单个应用程序池配置空闲工作进程页出

  1. 打开 IIS 管理器。
  2. 在“连接”窗格中选择“应用程序池”,在“应用程序池”窗格中选择应用程序池,然后单击“操作”窗格中的“高级设置…”
  3. 在“高级设置”对话框中,在“进程模型”下,选择“挂起”作为“空闲超时操作”的值,以便在达到超时值时挂起工作进程,将其页出到磁盘。 选择“终止”以关闭工作进程
    Set idle time-out for pool
  4. (可选)将“空闲超时”值从默认 20 分钟设置为不同的时间段
  5. 单击“确定”。

将空闲工作进程页出配置为应用程序池的默认值

  1. 打开 IIS 管理器。
  2. 在“连接”窗格中选择“应用程序池”,然后单击“操作”窗格中的“设置应用程序池默认值...”
  3. 在“应用程序池默认值”对话框中,在“进程模型”下,选择“挂起”作为“空闲超时操作”值,以便在达到超时值时挂起工作进程,将其页出到磁盘。 选择“终止”以关闭工作进程
    Set idle time-out as default
  4. (可选)将“空闲超时”值从默认 20 分钟设置为不同的时间段
  5. 单击“确定”。

查看挂起状态下的资源使用

可以在任务管理器中看到挂起的工作进程,还可以看到它们使用很少的内存或 CPU。

Suspended idle sites

验证 applicationHost.config 中的空闲超时操作配置

可以在 applicationHost.config 文件中的两个位置输入 idleTimeoutAction 配置:

  • 对于单个应用程序池,在 <add> 元素的 <processModel> 子元素中,该元素仅为该池设置 idleTimeoutAction 属性。 下面是 applicationHost.config 文件的屏幕截图中 DefaultAppPool 发生的情况,其中 idleTimeoutAction 设置为“挂起”。
  • 对于所有应用程序池,在 <applicationPoolDefaults> 元素的 <processModel> 子元素中,该元素会为所有池创建默认设置。 如果未为特定池设置 idleTimeoutAction,例如下面的 .NET v4.5 池,则默认的 idleTimeoutAction 值将用于该池,在本例中为“终止”。 如果为池设置了 idleTimeoutAction,则此设置将替代默认值。

Idle time-out in config file

总结

在本指南中,您已将 IIS 配置为挂起或终止已空闲指定时间的工作进程。