使用IIS部署网站时,应用程序池需要修改哪些配置选项?
文章分类: 软件开发
发布日期: 2020-03-29

我们在使用IIS作为Web服务器进行网站部署的时候,经常会遇到这么一个情况,就是如果站点长期没有访问,再次打开时会非常慢,这是因为在IIS的默认设置中,为了节省内存资源,会对长时间未使用的应用程序池进行回收导致的。

并且,如果在Web程序中使用了Session作为登录状态保持的方案,那么随着应用程序池的回收,Session也将随之释放,造成不可预期的系统登录状态丢失,这对于我们系统的功能体验有着很大的伤害。

另外,对于并发量很大的Web程序,IIS应用程序池的默认设置队列长度比较小,导致系统无法应对大访问量的情况,这也是需要优化的部分。

具体的优化步骤,如下所示:

1、打开“设置应用程序池默认设置”对话框

设置应用程序池默认配置-01.png

2、根据图示修改优化如下六个配置选项

设置应用程序池默认配置-02.png

附:相关优化配置项的解释说明

  1. 常规 -> .NET CLR 版本
    表示Web应用程序所使用的.NET通用语言运行时版本,针对.Net Framework开发的程序有效,如果是.Net Core框架开发的程序,则需要将此项设置为“无托管代码”。

  2. 常规 -> 队列长度
    应用程序池排队的最大请求数。默认值1000,最大值65535。如果设置太大则会消耗大量的系统资源 ,而设置太小会导致客户端访问时频繁出现”503服务不可用”响应。为了充分发挥服务器的性能,在这里我们设置为最大值65535。

  3. 回收 -> 固定时间间隔(分钟)
    表示一个时间段,超过该时间段,应用程序池将回收。这里我们设置为0,则应用程序池不会按固定间隔回收,防止造成页面特定时间突然打开缓慢或Session丢失等情况。

  4. 回收 -> 禁用重叠回收
    默认值False,应用程序池使用重叠回收方式。在这种方式下,当应用程序池要关闭某个工作进程时,会先创建一个工作进程,直到新的工作进程成功创建后才关闭旧的工作进程。在此我们设置为True,表示先关闭旧的工作进程,然后再创建新的工作进程。
    如果Web 应用程序不支持多实例运行,那么你必须配置应用程序池禁止使用重叠回收方式。

  5. 进程模型 -> 空闲超时操作
    默认是Terminate,表示一旦超时就终止服务,并回收工作进程的缓冲区的内存;在此我们改为Suspend,表示超时则悬停等待,暂不回收缓冲区内存。

  6. 进程模型 -> 闲置超时(分钟)
    表示一个时间段,设定工作进程允许保持闲置状态的最大时间间隔,超过该时间就会自动关闭。在此我们设置为0,避免内存信息频繁被回收清空。

需要说明的是,本文所采取的IIS配置优化策略,主要基于如下场景:

  1. 部署的Web应用程序是采用ASP.NET Core框架开发。
  2. 采用了Microsoft.AspNetCore.Authentication认证框架作为登录状态验证机制。
  3. Web应用程序访问量有限,但可用性要求较高。

以上。


创建时间: 2020-03-29 14:20:16
更新时间: 2020-03-29 23:47:18