【问题标题】:Azure webapi warmupAzure webapi 预热
【发布时间】:2020-02-06 13:11:13
【问题描述】:

阅读文档时:https://docs.microsoft.com/en-us/azure/app-service/deploy-staging-slots#swap-operation-steps,第 4 步,这是指定的:

如果通过自定义预热启用自动交换,则触发应用程序 通过向应用程序根 ("/") 发出 HTTP 请求来启动 源槽的每个实例。

如果未指定 applicationInitialization,则触发 HTTP 请求 到每个实例上源槽的应用程序根目录。

如果实例返回任何 HTTP 响应,则认为它已被加热 起来。

这是否意味着 1) 必须启用自定义预热才能使交换调用 root(或任何其他 url),或者 2) 如果未启用自定义预热,它会调用 root?不管 1) 还是 2):如果什么都不指定,返回的所有状态码都告诉交换进程该 slot 已预热?

更新 我阅读文档的方式 (https://docs.microsoft.com/en-us/azure/app-service/deploy-staging-slots#swap-operation-steps):

... App Service does the following to ensure that the target slot doesn't experience downtime:

1. ...
2. ...
3. ...
4. If auto swap is enabled with custom warm-up, **[AppService will]** trigger Application Initiation by making an HTTP request to the application root ("/") on each instance of the source slot.

If applicationInitialization isn't specified, **[AppService will]** trigger an HTTP request to the application root of the source slot on each instance.

If an instance returns any HTTP response, it's considered to be warmed up.
5. ...

但我好像读错了?

【问题讨论】:

    标签: azure azure-deployment-slots


    【解决方案1】:

    让我一一回答你的问题:

    1:必须启用自定义预热才能使交换调用 root(或任何其他 url)

    是的,如果启用了自动交换并且您希望暂存槽在交换过程开始之前预热。否则,它将在第一个请求时预热并延迟响应,直到预热完成。


    2:或者,如果未启用自定义预热,它会调用 root?

    如果没有在web.config文件中的system.webServer > ApplicationInitialization下指定,它不会自己调用root。


    3:不管1还是2:如果什么都不指定,返回的所有状态码都告诉swap进程slot被预热了?

    如果没有指定任何内容,它只会交换插槽,根本不考虑预热。只有当applicationInitialization 块在web.config 文件中可用时,它才会等待ApplicationInitialization 模块返回完成状态,然后继续进行交换。


    即使在 staging slot 完成预热后,由于启动时的配置差异,交换 staging-slot-worker-process 仍可能重新启动。

    我观察到,当暂存配置和生产配置完全匹配时,交换过程会导致零停机。

    swap过程中应用程序的预热和重启还有其他几种情况,请参考这篇文章: https://ruslany.net/2017/11/most-common-deployment-slot-swap-failures-and-how-to-fix-them/

    【讨论】:

    • 我问的原因是这个问题的答案在网上是分开的,不清楚文档是如何指定的。我已经更新了我的答案以显示我是如何阅读它的。我在没有 applicationInitialization 的情况下经历过交换拒绝完成,因为它无法调用 /。但这与我在互联网上阅读的内容相矛盾,我认为文档对此不够清楚。
    • 哦。它仅在启用自动交换时才调用 root :D 没有 5。如果未指定 applicationInitialization,则 - 它不是单独的规则。只有在启用自动交换时才会检查 applicationInitialization。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 2020-10-21
    • 2020-03-07
    • 2018-12-04
    相关资源
    最近更新 更多