【问题标题】:Azure Staging<>Production Swap not seamless - needs to warm up againAzure 暂存<>生产交换不是无缝的 - 需要再次预热
【发布时间】:2017-03-15 05:51:24
【问题描述】:

大约一年前,Azure Web App 插槽交换是“无缝的”——一旦完成,新实例就会立即预热以接受新请求。

现在,当我将插槽从 STAGING 交换到 PRODUCTION 时,即使在针对 STAGING 运行测试以预热应用程序之后,交换也会导致很多预热时间。

这可能发生了哪些变化,我可以做些什么来确保我的应用在交换期间保持 100% 可访问?

【问题讨论】:

    标签: azure azure-web-app-service


    【解决方案1】:

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

    我注意到有几件事会导致在生产热身后无法立即进行交换,如果您考虑一下,它们还是有道理的:

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

      <system.webserver> <applicationInitialization> <add initializationPage="/" /> </applicationInitialization> </system.webServer>

    【讨论】:

      【解决方案2】:

      这可能发生了哪些变化,我可以做些什么来确保我的应用在交换期间保持 100% 可访问?

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

      【讨论】:

      • 我的所有请求都没有被丢弃,但无论分期有多“热身”,它们都会出现大量延迟。
      • 我想知道swap slot后第一次请求是否慢,如果是这种情况,可能是在staging swap到生产之前,网站会重新启动以使更改生效,这会导致网站冷启动,第一次请求会变慢。
      • 这不是违背插槽的目的吗?交换后第一个请求很慢。
      【解决方案3】:

      如果您需要预热的不仅仅是网络应用的根目录,请尝试自定义预热配置

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

      【讨论】:

      • 就是这样,我之前不需要这些,甚至root都需要重新预热。
      猜你喜欢
      • 2023-03-17
      • 1970-01-01
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      • 1970-01-01
      相关资源
      最近更新 更多