我们在使用IIS作为Web服务器进行网站部署的时候,经常会遇到这么一个情况,就是如果站点长期没有访问,再次打开时会非常慢,这是因为在IIS的默认设置中,为了节省内存资源,会对长时间未使用的应用程序池进行回收导致的。
并且,如果在Web程序中使用了Session作为登录状态保持的方案,那么随着应用程序池的回收,Session也将随之释放,造成不可预期的系统登录状态丢失,这对于我们系统的功能体验有着很大的伤害。
另外,对于并发量很大的Web程序,IIS应用程序池的默认设置队列长度比较小,导致系统无法应对大访问量的情况,这也是需要优化的部分。
具体的优化步骤,如下所示:
1、打开“设置应用程序池默认设置”对话框
2、根据图示修改优化如下六个配置选项
附:相关优化配置项的解释说明
常规 -> .NET CLR 版本
表示Web应用程序所使用的.NET通用语言运行时版本,针对.Net Framework开发的程序有效,如果是.Net Core框架开发的程序,则需要将此项设置为“无托管代码”。常规 -> 队列长度
应用程序池排队的最大请求数。默认值1000,最大值65535。如果设置太大则会消耗大量的系统资源 ,而设置太小会导致客户端访问时频繁出现”503服务不可用”响应。为了充分发挥服务器的性能,在这里我们设置为最大值65535。回收 -> 固定时间间隔(分钟)
表示一个时间段,超过该时间段,应用程序池将回收。这里我们设置为0,则应用程序池不会按固定间隔回收,防止造成页面特定时间突然打开缓慢或Session丢失等情况。回收 -> 禁用重叠回收
默认值False,应用程序池使用重叠回收方式。在这种方式下,当应用程序池要关闭某个工作进程时,会先创建一个工作进程,直到新的工作进程成功创建后才关闭旧的工作进程。在此我们设置为True,表示先关闭旧的工作进程,然后再创建新的工作进程。
如果Web 应用程序不支持多实例运行,那么你必须配置应用程序池禁止使用重叠回收方式。进程模型 -> 空闲超时操作
默认是Terminate,表示一旦超时就终止服务,并回收工作进程的缓冲区的内存;在此我们改为Suspend,表示超时则悬停等待,暂不回收缓冲区内存。进程模型 -> 闲置超时(分钟)
表示一个时间段,设定工作进程允许保持闲置状态的最大时间间隔,超过该时间就会自动关闭。在此我们设置为0,避免内存信息频繁被回收清空。
需要说明的是,本文所采取的IIS配置优化策略,主要基于如下场景:
以上。
微信扫描二维码
在手机上观看本页