解决方案:

解决方案:

我在 VDS 上托管了一个小型 ASP.NET MVC 5 Web 应用程序。VDS
具有以下配置:2.6 Gz CPU、1 Gb RAM、20 GB SSD、Windows Server 2012 R2、IIS 8.5。

最多有 5 个用户同时访问此网站。一切都运行得很快,但冷启动可能需要很长时间。我知道有不同的选项可以减少冷启动时间:

  • 我可以让应用程序池“始终运行”并将 preloadEnabled 设置为 true。
  • 或者我可以使用 IIS 8.5 的新“暂停”功能。

可能还有其他我不知道的可能性。减少应用程序冷启动时间的最佳策略是什么?

解决方案:

  • 根据建议,我增加了 AppPool 关闭超时时间。但我没有将其设置为 12 小时,而是将其设置为 0(禁用),并将 AppPool 回收时间安排在凌晨 4:00。
  • 我启用了应用程序初始化并将其配置为将请求发送到执行初始化的特殊页面。在我的应用程序中,它是 DbContext 的初始化。
  • 应用程序初始化模块只能发出 http 请求,但整个应用程序都受到 ASP.NET MVC RequreHttpsAttribute 的保护。因此最初它无法正常工作。有一种解决方法是禁用本地请求中的 http 到 https 重定向,如所述这里

答案1

从听上去,“始终运行”是最佳选择。除此之外,您还需要提供更多详细信息。

您是否在白天经常更新应用程序?如果是,您是否在应用程序启动时执行操作?将数据预加载到缓存/等等?

您是否担心不“始终运行它”会带来金钱/资源方面的担忧?可以将 AppPool 关闭超时时间延长到 12 小时,并编写一个计划任务,在用户到达之前尽早访问您的应用。这样,它就可以在晚上关闭。

相关内容