Azure Functions 显示 0 worker、HTTP 503 怎么办?实例分配与启动排查

先区分代码启动失败与平台未分配工作实例,再决定重启、回退或提交支持工单

Azure Function App 长期 0 worker、应用与 SCM 同时 HTTP 503 时,核对诊断、订阅、存储与日志,区分代码故障和平台实例分配问题。

直接答案:Azure Function App 同时出现站点 HTTP 503、SCM/Kudu 503、ZIP 部署报 ServiceUnavailable from host runtime,并且“诊断并解决问题”显示长期为 0 个工作实例时,先不要反复改代码或删除资源。这组现象更接近函数宿主没有启动或平台没有分配工作实例;只有宿主已经运行、日志出现入口点或依赖错误时,才进入代码修复。

先在 Azure 门户打开“函数应用 → 诊断并解决问题 → Function App Down or Reporting Errors”。此检查不收费,也不会改动资源。重启会造成短暂中断;更换托管计划、重建应用或新增监控可能产生费用。

先确认是不是同一个 0 worker 故障

观察结果更可能的方向下一步
应用 503,但 SCM 可打开且有启动异常代码、运行时或配置错误查看 Application Insights 与宿主日志
应用和 SCM 都 503,诊断长期 0 worker宿主未获实例或平台侧异常核对订阅、计划、资源提供程序和服务运行状况
应用可打开,只有某个函数 5xx函数代码、触发器或依赖问题按执行日志修复
重启后短暂恢复又失败启动配置、存储、资源压力或平台波动保留时间线并检查配置与指标

从诊断入口收集不会改动资源的证据

  1. 进入目标函数应用,打开“诊断并解决问题”。
  2. 搜索并打开“Function App Down or Reporting Errors”,记录检查时间、工作实例数和问题代码。
  3. 打开“概述”,核对订阅状态是否为 Enabled,并记下资源组、区域、操作系统和托管计划。
  4. 打开“活动日志”,筛选创建、启动、停止、配置写入和部署失败事件。
  5. 若已启用 Application Insights,查看失败请求和异常;若没有宿主启动记录,也要如实记录“无日志”。

以下只读命令不会修改应用。把变量替换为实际值:

az account show --query "{subscription:id,state:state,tenant:tenantId}" -o table
az functionapp show --resource-group <资源组> --name <函数应用名> --query "{state:state,host:defaultHostName,kind:kind,plan:serverFarmId}" -o json
az monitor activity-log list --resource-group <资源组> --offset 2h --status Failed --max-events 50 -o table

订阅应为 Enabled。活动日志有策略、配额、部署或资源提供程序错误时,先沿该错误处理;结果正常但仍长期 0 worker,平台侧证据更强。

排除会阻止函数宿主启动的配置

Azure Functions 依赖关联的存储账户管理触发器、日志和动态扩缩容。进入“设置 → 环境变量”,只核对设置是否存在,不要复制连接字符串。重点检查 AzureWebJobsStorage;Windows Consumption 或 Premium 还可能使用 WEBSITE_CONTENTAZUREFILECONNECTIONSTRINGWEBSITE_CONTENTSHARE

若存储账户被删除、连接信息失效、网络规则拒绝访问,宿主可能无法启动。先恢复原存储可达性或回退最近一次配置,不要新建空存储后直接替换生产连接。

Node.js 应用已获得实例但入口点报错时,再检查运行时版本、package.json 和入口注册。可临时设置 FUNCTIONS_NODE_BLOCK_ON_ENTRY_POINT_ERROR=true 让入口错误进入日志;修改环境变量会重启应用,操作前记录原值。

什么时候重启,什么时候停止重建

没有正在处理的请求,且诊断没有指出配置写入进行中时,可在“概述 → 重启”执行一次。下面命令会造成短暂中断:

az functionapp restart --resource-group <资源组> --name <函数应用名>

重启后应用与 SCM 仍为 503、诊断继续显示 0 worker 时,不要连续重启、跨区域批量新建或删除原应用。这些动作会增加费用和配置差异,也会破坏故障证据。

确认平台侧异常后提交支持请求

先检查 Azure Service Health。进入“帮助 + 支持 → 创建支持请求”,提供订阅、资源组、应用、区域、托管计划、503 的 UTC 时间、诊断中 0 worker 的持续时间、活动日志关联 ID,以及已核对的订阅和存储状态。不要提交存储密钥、发布配置文件、连接字符串或访问令牌。

修复后怎样验收和回退

  1. 诊断不再显示持续 0 worker,应用与 SCM 不再返回 503。
  2. 部署一个可识别版本,确认部署接口成功。
  3. 调用最小 HTTP 函数,确认返回预期状态码。
  4. 检查请求、异常和依赖,至少覆盖一次冷启动。
  5. 保存配置变更前后值和账单影响。

若新配置扩大故障,恢复原值并再次重启;平台恢复前业务不能等待时,从已验证的代码和配置部署备用应用,再切换流量。原应用要保留到日志、域名、密钥引用和回退路径均已核对。

相关指南

官方来源

云服务器教程Azure 自定义域名仍绑定旧订阅怎么办?App Service 与 Static Web Apps 排查2026-09-18云服务器教程Vue、React 单页应用刷新后 404 怎么办?Nginx History 路由与 API 分流2026-09-13云服务器教程Docker 提示 pull access denied 怎么办?镜像名、仓库权限与登录排查2026-09-13

加入开发者交流社区

与全球开发者、运维和工作室一起交流技术、分享经验、配置、账号与最新优惠信息

  • 云平台使用交流
  • 资源优惠信息
  • 最新教程与资讯
  • 开发者经验分享
联系 Telegram 客服
加入开发者交流社区