App Service Plan规模单位升级是否正在等待预热?

时间:2019-09-14 20:01:37

标签: azure azure-web-app-service azure-app-service-plans

我的理解是,当App Service的“扩展单元”(即Azure区域内的虚拟机集合)进行升级时,它们将被批量升级,称为“升级域”,与其他租户共享。

升级域完成后,会将应用程序移到该域上。这将导致冷启动,建议您使用AppInit模块...到目前为止一切正常。

我不清楚的是双重的:

A。将应用程序移至新升级的升级域时,负载平衡器是否会等到预热完成后再进行交换?类似于等待插槽交换的方式?

B。扩展实例是否始终在不同的升级域上?如果不是这种情况,则有目的地向外扩展实例,使其不太倾向于由升级引起的冷启动,或者它们不太倾向于在什么时候完成升级域?


要澄清:

对于A。 该应用程序是否仍在旧的预先升级的“升级域”上运行,而新升级的升级域却被预热,然后前端交换给它?

还是与插槽交换不同,并且应用程序正在过渡到新的VM,而不考虑其预热状态吗?然后启动AppInit?

1 个答案:

答案 0 :(得分:1)

使用AppInit功能,随着新的Web应用程序实例被添加到循环中,我们确保应用程序初始化模块报告网站已完全预热,然后再从前端发送请求

要使用此功能,请像下面这样在web.config中添加一个applicationInitialization部分:

<system.webServer>        
<applicationInitialization remapManagedRequestsTo="/Content/warmup.html"> 
                  <add initializationPage="/api/values/100" /> 
          </applicationInitialization>
</system.webServer>

您可以有多个初始化页面,并且AppInit模块将确保在声明站点正式预热之前所有页面都返回200。

同时,您可以(可选)使用remapManagedRequestsTo属性来创建一个友好的页面,以显示该站点仍在预热中。

借助AppInit功能,在轮换添加新实例时,客户将看不到该页面,但是,如果某个进程由于某种原因而崩溃并再次进入AppInit,它将起作用。