![一段时间后的第一个请求总是很慢 - ASP.NET MVC / IIS 8.5 / Windows Server 2012 R2 VPS](https://linux22.com/image/656232/%E4%B8%80%E6%AE%B5%E6%97%B6%E9%97%B4%E5%90%8E%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E8%AF%B7%E6%B1%82%E6%80%BB%E6%98%AF%E5%BE%88%E6%85%A2%20-%20ASP.NET%20MVC%20%2F%20IIS%208.5%20%2F%20Windows%20Server%202012%20R2%20VPS.png)
我在具有 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 的博客:
还要记得设置:
- 启动模式到永不停止在应用程序池上
- 已启用预加载到真的在网站层面
您可以设置此设置,而无需应用程序初始化模块已安装,但它们不会产生任何效果。
更多信息这里。
答案2
您的网站所针对的 .NET Framework 版本与 Web 服务器上安装的 .NET Framework 运行时版本之间是否可能存在版本不匹配?
您是否正在部署未预编译和/或可更新的网站? -
.NET 运行时版本升级旨在实现高度向后兼容。然而,当我将多个以 .NET 4.5.1 Framework 为目标的网站从 Windows Server 2008 R2 服务器迁移到已修补 .NET 4.6 运行时的 Windows Server 2012 R2 服务器时,我遇到了非常类似的问题。我所有初始页面加载(在多个网站上)开始花费两分钟加载每个页面,而不是一秒钟。而且我使用不同 IIS 设置进行的所有实验都无法解决该问题。
最终我通过以下两种方式之一解决了这个问题:
- 完全重建服务器,修补 .NET 4.5 运行时确实解决了我的问题(以及添加注册表设置阻止安装 .NET 4.6.1)。
- 或者,重新部署我的网站并选中“预编译”并取消选中“允许更新”也可以解决我的问题。
相比之下,我所有的尝试回滚或修复 .NET 运行时版本在服务器上将 .NET 4.5 运行时升级到 .NET 4.5 运行时并没有解决我的页面加载问题。(本质上没有清洁、可靠的工艺完全回滚 .NET 运行时而无需重新映像服务器。