发布或重新启动后 Azure Web 应用程序非常慢

Posted

技术标签:

【中文标题】发布或重新启动后 Azure Web 应用程序非常慢【英文标题】:Azure web app very slow after publish or restart 【发布时间】:2018-07-17 22:48:37 【问题描述】:

当我发布或重新启动我的网络应用程序时,它第一次加载非常缓慢,然后当我使用 F5 刷新时,它又可以了。会是什么?

【问题讨论】:

如果它是一个网络应用程序,这是正常的,因为事情会被加载/缓存。 【参考方案1】:

这将发生在 Windows Azure 网站上。 Windows Azure 网站在共享资源池中运行,并使用热(活动)和冷(非活动)站点的概念,如果网站在 x 时间内没有活动连接,则站点进入冷状态意味着主机 IIS进程退出。当与该网站建立新连接时,需要几秒钟才能使该网站准备就绪并正常工作。取决于您的第一页代码如何,首次加载网站的时间会有所不同。

将新文件上传到应用容器后,IIS 需要一段时间才能启动。 应用初始化模块部署槽交换也需要好几次。

因此,您更新应用后的第一个页面会变慢。 Azure Web Apps 在一段时间不活动后也会脱水。如果页面有一段时间没有被访问,这也会导致第一个页面命中非常慢。

为了解决这个问题,在 web 应用程序的 Application Settings 中,您可以找到一个名为 Always On 的设置,它基本上每隔几分钟 ping 您的页面以保持应用程序的水分和响应式

更多详情可以参考这个blog。

正如 juunas 所说,您还可以使用 Razor view pre-compilation 来加快初始加载速度。否则,应用程序必须在第一次呈现视图时在运行时编译视图。

【讨论】:

由于 OP 也使用 ASP.NET MVC 5(根据标签判断),他们还可以使用 Razor 视图预编译来加速初始加载。因为否则应用程序必须在第一次渲染时在运行时编译视图。 提及应用程序初始化模块和部署槽交换也很好;) 感谢您的提醒,我会更新我的回复。 我应该如何配置预编译? 我尝试了预编译选项,它没有任何区别。我知道 Always On 设置,但我之前没有考虑过,因为 web 应用程序最近开始这样做。谢谢

以上是关于发布或重新启动后 Azure Web 应用程序非常慢的主要内容,如果未能解决你的问题,请参考以下文章

GEN 0 垃圾爬上 Azure 这正常吗?

Azure Web 作业单例功能已锁定

Azure 应用服务响应 Web 应用(Linux Web 应用)容器无法启动

使用 Azure Active Directory 身份验证在 Linux 上重新启动 Azure 应用服务会重置 /.auth/me/

发布到 Azure 网站后无法加载文件或程序集 System.Web.Http.WebHost

重新启动或不活动期间后,Django 站点加载速度非常慢