0

阅读文档时: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):如果没有指定,返回的所有状态码都告诉交换进程该插槽已预热?

更新 我阅读文档的方式(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. ...

但似乎我读错了?

4

1 回答 1

2

让我一一回答你的问题:

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

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


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

system.webServer > ApplicationInitialization如果它没有在web.config文件中指定,它不会自己调用 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-如何修复它们/

于 2019-10-09T09:35:34.970 回答