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