You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Function App部署槽交换卡住后崩溃问题排查求助

问题:Azure Function App部署槽交换耗时过久后崩溃

此前我的Azure Function App部署槽交换功能运行正常,但近期所有实例都出现交换耗时久后崩溃的情况。使用相同脚本重新创建Function App后问题依然复现,无法修复。怀疑是配置项导致部署槽无法正常切换,请问可能的原因是什么?

核心构建脚本

# Azure Login
az login

# Set deployment Environment
$environment = "stage"

# Resource Group Variables
$subscriptionId = ""
$domain = "test4"
$resourceGroup = "xx-platform-$domain-$environment"
$region = "northEurope"

# Functions app variables
$storageName = "xxfn$domain$environment" # must be less than 24 chars and all lower case
$functionAppDeploymentSlotName = "test"
$functionAppName = "xx-platform-$domain-fn-$environment"
$functionAppEnvironment = "AZURE_FUNCTIONS_ENVIRONMENT=Development"
$websiteRunFromPackage = "WEBSITE_RUN_FROM_PACKAGE=1"

#########################################################################################################################################################################
## Resource Group
Write-output "Creating resource group";

# Set subscription
az account set --subscription $subscriptionId

# Create resource group
az group create -l $region -n $resourceGroup  

#########################################################################################################################################################################
## Functions App
Write-output "Creating Functions App";

# Create storage account
az storage account create --name $storageName --location $region --resource-group $resourceGroup --sku Standard_LRS

# Create functions app - using consumption plan
az functionapp create --name $functionAppName --storage-account $storageName --consumption-plan-location northEurope --resource-group $resourceGroup --functions-version 4

# Set functions app configuration settings

# Environment
az functionapp config appsettings set --name $functionAppName --resource-group $resourceGroup --settings $functionAppEnvironment 
# WEBSITE_RUN_FROM_PACKAGE 
az functionapp config appsettings set --name $functionAppName --resource-group $resourceGroup --settings $websiteRunFromPackage 
# SET DOT NET FRAMEWORK VERSION
az functionapp config set --net-framework-version v6.0 -g $resourceGroup -n $functionAppName


# Create functions app deployment slot
az functionapp deployment slot create --name $functionAppName  --resource-group  $resourceGroup --slot $functionAppDeploymentSlotName 

可能的配置问题排查方向

  • 环境模式不匹配:脚本中设置AZURE_FUNCTIONS_ENVIRONMENT=Development,但你的环境是stage(预发布),Development模式下的调试特性可能会在槽交换时引发资源占用或初始化异常,建议改为Production测试。
  • 运行包配置异常:WEBSITE_RUN_FROM_PACKAGE=1启用了包运行模式,若包文件损坏、存储账户权限不足(槽无法访问存储中的包),会导致交换后应用无法启动,进而崩溃。可以检查存储账户的访问权限,重新上传包文件测试。
  • 版本兼容性问题:Function App v4推荐使用.NET 6,但需确认函数的运行时类型(In-Process/Isolated)是否与配置的.NET Framework Version匹配,不兼容的版本会导致启动失败。
  • 消费计划资源限制:消费计划的资源配额有限,槽交换时可能遇到冷启动超时、内存/CPU超限,导致应用无法初始化。可以临时切换到弹性计划测试是否能正常交换,排除资源限制问题。
  • 槽配置缺失:创建槽时默认不会同步主槽的所有应用设置(如存储连接字符串、第三方服务密钥),若槽缺少必要配置,交换后应用无法加载依赖资源,引发崩溃。检查槽的应用设置是否与主槽一致。
  • 获取详细日志:使用命令行执行交换操作,能得到更具体的错误信息:
    az functionapp deployment slot swap --name $functionAppName --resource-group $resourceGroup --slot $functionAppDeploymentSlotName --target-slot production
    
    同时启用函数应用的应用服务日志,查看交换过程中的具体错误堆栈。

内容的提问来源于stack exchange,提问作者Funky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 01:15:54