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


12

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

我的问题是,一段时间后没有任何请求的第一个请求始终会得到较慢的响应-根据Chrome开发工具,大约为1.5秒。随后的刷新请求/响应仅花费约45毫秒

我已经在应用程序池上将启动模式设置为AlwaysRunning,并且在网站级别上将Preload Enabled设置为True,但是绝对没有效果。即使没有任何更改/上载,经过一段时间后,下一个请求也需要1.5 s来获得响应。

Answers:


9

问题是,您需要安装IIS功能Application Initialization。然后,它将与您的配置一起使用。

图片来自Rick Strahl的博客

IIS功能

还记得设置:

  • 在应用程序池上将启动模式设置AlwaysRunning
  • 在网站一级将预加载”设置True

您可以在未安装应用程序初始化模块的情况下设置此设置,但是这些设置不会起作用。

更多信息在这里


0

与Web服务器上安装的.NET Framework Runtime版本相比,您的网站所针对的.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 Runtime版本回滚或修复到.NET 4.5 Runtime的尝试都没有解决我的页面加载问题。(基本上没有干净,可靠的过程可以完全回滚.NET Runtime ,而无需重新映像服务器。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.