应用程序池回收后,如何预热我的 asp.net mvc webapp?

应用程序池回收后,如何预热我的 asp.net mvc webapp?

我在 IIS 8.0 中运行 ASP.NET MVC Web 应用程序。我的应用程序需要在接受请求之前进行预热。我们已经有一个流程可以在部署新代码时自动预热应用程序。但是,我们看到定期发生应用程序池回收事件,导致应用程序无法预热。

是否有检测应用程序池回收事件并执行脚本或某些代码的最佳实践?

答案1

您可以做几件事:

1. 应用程序初始化

您可以使用应用程序初始化模块随 IIS 8.0 提供

你可以在你的web.config

<applicationInitialization
     doAppInitAfterRestart="true" >
   <add initializationPage="/" />
</applicationInitialization>

initializationPage="/"每次您的应用程序自动启动时,这将向您的应用程序的根目录()发送请求。

您还可以配置应用程序池的启动模式,Always Running这意味着每次 IIS 重新启动时,它将确保立即启动您的应用程序池(如果从右键单击您的应用程序池,然后Advanced Settings

在此处输入图片描述

以及Preload你的网站本身(右键单击网站Manage Site然后Advanced Settings

在此处输入图片描述

2. 禁用空闲超时

Idle Time-out此外,您可以通过将应用程序池的空闲时间更改为 0(无限)来禁用空闲超时(默认情况下,IIS 将在活动 20 分钟后关闭应用程序)

在此处输入图片描述

3. 禁用定期回收

默认情况Regular Time Interval (minutes)下,IIS 会每 29 小时回收一次您的应用程序。

在此处输入图片描述

为了

答案2

根据我的经验,启用 AlwaysRunning 和 Preload 不会带来太大的速度提升。大部分等待时间都花在了动态编译(可以使用 aspx 预编译来修复)以及将程序集加载到内存和缓存上。

相关内容