我们有许多Azure Web Apps,我们会定期(一周几次)部署这些Azure Web Apps。使用Zip Push Deploy方法(https://docs.microsoft.com/en-us/azure/azure-functions/deployment-zip-push)执行部署,效果很好。
我们的问题是,直到对服务器发出第一个请求之前,不同的Web应用程序才能正确启动,这意味着第一个用户会遭受较大的性能损失。我们试图通过在部署完成后立即发出请求来解决此问题,但似乎我们经常点击旧版本的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"
}
答案 0 :(得分:1)
有没有机会使用异步zipdeploy而不等待它?如果您等待,则新位应很快生效。为安全起见,请在部署后等待10秒钟(以传播文件更改通知),并且我不希望您会遇到旧版本。