我在 IIS 8.0 中运行 ASP.NET MVC webapp。在接受请求之前,我的应用程序需要预热。当我们部署新代码时,我们已经有一个自动预热应用程序的过程。但是,我们会看到导致应用程序未预热的周期性应用程序池回收事件。
是否有检测应用程序池回收事件并执行脚本或某些代码的最佳实践?
我在 IIS 8.0 中运行 ASP.NET MVC webapp。在接受请求之前,我的应用程序需要预热。当我们部署新代码时,我们已经有一个自动预热应用程序的过程。但是,我们会看到导致应用程序未预热的周期性应用程序池回收事件。
是否有检测应用程序池回收事件并执行脚本或某些代码的最佳实践?
您可以做几件事:
1.应用初始化
您可以使用IIS 8.0 自带的应用程序初始化模块
你可以在你的
web.config
initializationPage="/"
每次您的应用程序自动启动时,这都会向您的应用程序的根 ( ) 发送一个请求。您还可以为您的应用程序池配置启动模式,
Always Running
这意味着每次 IIS 重新启动时,它将确保立即启动您的应用程序池(如果从右键单击您的应用程序池然后Advanced Settings
对于您的网站本身(然后右键
Preload
单击该网站Manage Site
Advanced Settings
2.禁用空闲超时
Idle Time-out
此外,您可以通过将应用程序池的 in 更改为 0(无限)来禁用 idleTimeout(默认情况下,IIS 将在活动 20 分钟后关闭应用程序)3.禁用定期回收
默认情况下也关闭
Regular Time Interval (minutes)
IIS 将每 29 小时回收一次您的应用程序。为了
根据我的经验,AlwaysRunning 和 Preload 启用并没有得到太多的加速。最长的等待时间是动态编译(可以用 aspx 预编译修复)和将程序集加载到内存和缓存中。