首页 文章

部署后预热Azure Web App(不使用部署插槽)

提问于
浏览
1

我们有许多Azure Web应用程序,我们定期(每周几次)部署 . 使用Zip Push Deploy方法(https://docs.microsoft.com/en-us/azure/azure-functions/deployment-zip-push)执行部署,这非常有效 .

我们的问题是,在针对服务器发出第一个请求之前,不正确地启动了不同的Web应用程序,这意味着第一个用户会受到很大的性能损失 . 我们尝试通过在部署完成后立即发出请求来解决此问题,但似乎我们经常点击旧版本的Web应用程序而不是预热新版本 .

我知道我们可以使用部署插槽及其预热功能,但由于许多原因,部署插槽现在不适合我们 .

我们有什么方法可以知道部署何时完成,以便在新代码启动并运行之前我们不会触发预热调用(例如,用户使用Powershell脚本)?

目前我们使用类似于下面的Powershell查询来查看应用程序服务,但由于部署尚未完成,它们通常会很快返回:

# Warmup Azure service
$warmupUrl = "https://$appName.azurewebsites.net/"
Write-Output "Making request to $warmupUrl"
$stopwatch = [Diagnostics.Stopwatch]::StartNew()

Try {
  # Allow redirections on the warm up
  $response = Invoke-WebRequest -UseBasicParsing $warmupUrl - 
MaximumRedirection 10 -TimeoutSec 240
   $stopwatch.Stop()
   $statusCode = [int]$response.StatusCode
  Write-Output "$statusCode Warmed Up Site $TestUrl in 
$($stopwatch.ElapsedMilliseconds)s ms"
} catch {
    #$_.Exception|format-list -force
} Finally
{
     $stopwatch.Stop()
     Write-Output "Warmed Up Site $warmupUrl in 
 $($stopwatch.ElapsedMilliseconds)s ms"
}

1 回答

  • 1

    您是否有机会使用async zipdeploy而不是等待它?如果你等待它,新位应该很快就会生效 . 为了安全起见,请在部署后等待10秒(以允许文件更改通知传播),我不希望您曾经使用旧版本 .

相关问题