在过去的几周里,我们一直在调查一些性能问题,其中我们的 MVC 应用程序对第一个请求的响应非常慢。我们说的是第一个请求需要 30-45 秒,每个新视图需要 3 秒。我们的MVC应用程序正在使用位于同一服务器上的OData API(Web API)。除了与 MVC 应用程序相同的性能问题外,对实体框架版本 6 的第一个查询在 6 秒内执行,新查询的执行速度比后续查询慢 200 毫秒。
为了满足我们的要求,我们选择执行所有已知的 Ef 查询,并从 Global.asax 中的Application_Start命中我们所有的 MVC/API 端点。这似乎至少可以正常工作几个小时,但是在一段时间不使用后,对每个 MVC 视图的第一个请求会在 3-5 秒内响应。
我们已将网站配置为"始终打开",并且在 IIS 日志或添加到Application_Start的日志记录中找不到任何内容。因此,我们的应用程序似乎至少没有回收利用。我怀疑某种IIS缓存被清除或某些Ef缓存?欢迎任何建议。
您需要为 Web 应用启用"始终开启"设置。
可以从 portal.azure.com ->站点的边栏选项卡 -> 配置 ->常规设置 -> 始终开启
详情请看这里:https://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/
禁用 Always On 时,在处于非活动状态 20 分钟后,站点将被删除,以便为可能在同一应用服务计划上运行的任何其他站点释放资源。
我一直遇到同样的问题,不幸的是,"始终在线"设置在免费和共享定价层上不可用。我找到了一种简单的方法来保持 Web 应用程序温暖,这样它就不会卸载。诀窍是针对 Wep 应用程序 URL 设置一次 15 分钟的应用程序见解 ping 测试。有关如何执行此操作的演练,请参见此处
一个快速的解决方法是创建一个后台作业,该作业将频繁地 ping 您的网站以避免 webApp 的空闲状态。
或
尝试升级 Sql Server db 计划并相应地进行测试。
祝你好运,希望这有帮助。
您是否尝试通过启用失败的请求日志记录来调查此问题?
Azure 门户→应用服务→监视→诊断日志→失败请求跟踪(打开)
我遇到了类似的问题,该问题是由于使用 web.config 中的ipSecurity
部分限制对应用程序的访问而导致的。如果碰巧以这种方式限制访问,则需要将应用服务的 IP 列入允许列表。