簡體   English   中英

部署后預熱 Azure Web App(不使用部署槽)

[英]Warming up Azure Web App after deploy (without using deployment slots)

我們有許多 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"
}

您是否有機會使用異步 zipdeploy 而不是在等待它? 如果你等待它,新的位應該很快就會生效。 為安全起見,在部署后等待 10 秒(以允許文件更改通知傳播),我不希望您會遇到舊版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM