一段时间后的第一个请求总是很慢 - ASP.NET MVC / IIS 8.5 / Windows Server 2012 R2 VPS

一段时间后的第一个请求总是很慢 - ASP.NET MVC / IIS 8.5 / Windows Server 2012 R2 VPS

我在具有 Windows Server 2012 R2 / IIS 8.5 和 1 GB RAM 的 VPS 上托管低流量 ASP.NET MVC 5 应用程序。

我的问题是一段时间后,没有任何请求,第一次请求总是会得到缓慢的响应 - 大约 1.5 秒根据 Chrome Dev Tools。后续刷新请求/响应仅需要约 45 毫秒

我已经设置了启动模式在应用程序池上始终运行,并且已启用预加载在网站层面上确实如此,但它绝对没有效果。即使没有任何更改/上传,经过一段时间后,下一个请求也需要 1.5 秒才能得到响应。

答案1

问题是,您需要安装 IIS 功能Application Initialization。然后它应该与您的配置一起工作。

图片来自Rick Strahl 的博客

IIS 功能

还要记得设置:

  • 启动模式永不停止在应用程序池上
  • 已启用预加载真的在网站层面

您可以设置此设置,而无需应用程序初始化模块已安装,但它们不会产生任何效果。

更多信息这里

答案2

您的网站所针对的 .NET Framework 版本与 Web 服务器上安装的 .NET Framework 运行时版本之间是否可能存在版本不匹配?

您是否正在部署未预编译和/或可更新的网站? -

高级预编译设置

.NET 运行时版本升级旨在实现高度向后兼容。然而,当我将多个以 .NET 4.5.1 Framework 为目标的网站从 Windows Server 2008 R2 服务器迁移到已修补 .NET 4.6 运行时的 Windows Server 2012 R2 服务器时,我遇到了非常类似的问题。我所有初始页面加载(在多个网站上)开始花费两分钟加载每个页面,而不是一秒钟。而且我使用不同 IIS 设置进行的所有实验都无法解决该问题。

最终我通过以下两种方式之一解决了这个问题:

  1. 完全重建服务器,修补 .NET 4.5 运行时确实解决了我的问题(以及添加注册表设置阻止安装 .NET 4.6.1)。
  2. 或者,重新部署我的网站并选中“预编译”并取消选中“允许更新”也可以解决我的问题。

相比之下,我所有的尝试回滚或修复 .NET 运行时版本在服务器上将 .NET 4.5 运行时升级到 .NET 4.5 运行时并没有解决我的页面加载问题。(本质上没有清洁、可靠的工艺完全回滚 .NET 运行时而无需重新映像服务器。

相关内容