Azure Staging <>生产交换不是无缝的 - 需要再次热身

问题描述 投票:6回答:3

大约一年前,Azure Web App插槽交换是“无缝的” - 一旦完成,新实例就会热身接受新请求而不会有任何延迟。

现在,当我将STAGING的插槽交换到PRODUCTION时,即使在对STAGING进行测试以热身应用程序之后,交换也会产生许多预热时间。

这怎么可能改变,我该怎么做才能确保我的应用程序在交换期间保持100%可访问?

azure azure-web-sites azure-web-app-service
3个回答
3
投票

您是否对插槽配置进行了任何更改?

我注意到有些事情会导致交换在生产热身之后没有立即出现,如果你想一想它们会有意义:

  • 在“应用程序设置”下的每个插槽配置中,如果应用程序设置或连接字符串对于任何具有“插槽配置”复选框的设置不完全相同,则复选框是UNchecked,那么在这些情况下它将进行预热,然后是交换,然后必须再次热身,因为它似乎在交换后更新这些设置(所以看起来)。 为确保您的设置正确,如果您正在进行手动交换,请检查天蓝色门户网站是否显示“无警告”,以确保系统不必执行任何异常操作
  • 在手动交换时,源和目标选择很重要。这是因为源插槽首先使用目标插槽配置进行预热(因此在预热期间它将变慢)然后交换发生,这意味着源成为目标,应该是立即的。然后再次进行预热以使原始源恢复到其原始设置。因此,如果您为源选择了错误的项目,则预热时间将为DOUBLE。
  • 确保您在web.config中具有applicationInitialization设置,以强制热身在交换之前访问您网站上的网址: <system.webserver> <applicationInitialization> <add initializationPage="/" /> </applicationInitialization> </system.webServer>

1
投票

如果您需要预热超过Web应用程序的根目录,请尝试自定义预热配置

https://azure.microsoft.com/en-us/documentation/articles/web-sites-staged-publishing/#custom-warm-up-before-swap


1
投票

这怎么可能改变,我该怎么做才能确保我的应用程序在交换期间保持100%可访问?

据我所知,通常警告操作应该在暂存插槽中完成,然后再将其交换到生产环境中。这可以消除部署Web应用程序时的停机时间。流量重定向是无缝的,并且交换操作不会丢弃任何请求。 Ruslan写的this blog解释了当一个临时插槽换成生产时发生的动作序列,你可以阅读它。正如加勒特所说,如果它没有完全热身,custom warm-up actions可能会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.