常见方案、错误消息和症状
Microsoft Azure Function App 故障通常分为三个主要类别:配置问题、客户代码问题和平台问题。 本文详细介绍了这些问题,并介绍了相应的诊断工具进行故障排除。
配置问题
这些问题最常见。 它们包括:
- 缺少或不正确的应用程序设置,例如
AzureWebJobsStorageFUNCTIONS_WORKER_RUNTIME,和特定于绑定的配置。 有关详细信息,请参阅 Azure Function App 的应用设置参考。 - 存储帐户配置错误,包括已删除的帐户、轮换密钥和防火墙限制。 有关详细信息,请参阅 Azure Function App 的存储注意事项。
- Key Vault 和托管标识因配置权限错误或缺少标识分配而访问问题。 有关详细信息,请参阅以下资源:
客户代码问题
这些问题具有以下原因:
- 导致 CPU 或内存使用率高、SNAT 耗尽或运行时异常(例如除以零或 null 引用)的故障代码模式。
- 由于超时约束,长时间运行的或低效的函数在消耗计划中尤其存在问题。
有关详细信息,请参阅以下资源:
平台问题
这些问题不太常见,但通常会产生更大的影响:
不支持的运行时版本(例如 Azure Function App
~2.x或~3.x)。 有关详细信息,请参阅以下资源:主机启动失败,包括占位符站点专用化错误和容器分配问题。
典型的错误消息
可能会遇到常见错误,例如:
Azure Function App 运行时无法访问。
函数主机未运行。
访问被拒绝:
'C:\home\site\wwwroot\host.json'。HTTP 5xx 错误:503、502、500 或超时。
要监视的症状
函数未触发或运行。 请参阅 在 Application Insights 中分析 Azure Function App 遥测数据。
缺少调用历史记录或意外间隔。
高资源消耗(由检测器标记的 CPU 或内存峰值)。
超时或长时间响应时间,尤其是消耗计划(最多为 230 秒)。
概述页上未列出的函数。
诊断工具
若要识别和解决问题,可以在 Azure 门户中使用以下工具。
函数应用关闭或报告错误(预览版)
若要访问此工具,请执行以下步骤:
- 登录到 Azure 门户。
- 打开 Function App。
- 选择“诊断和解决问题”。
- 搜索 Function App Down 或报告错误(预览版)。
此工具的功能
- 使用现有检测器自动执行关键故障排除检查。
- 提供最小干扰和重点根本原因分析。
- 支持 对话诊断。
问题类别
函数应用停机时间错误按如下分类。
常见配置问题
- 配置错误的应用程序设置
- 存储帐户配置不正确或无法访问
- Key Vault 访问权限问题
- 托管标识身份验证问题
- 绑定或触发器配置错误
- 网络连接问题
代码和运行时资源问题
- CPU 或内存消耗量高
- SNAT 端口耗尽
- TCP 连接耗尽
- 长时间运行的或停滞的函数
- 运行时异常和失败
- 错误处理或重试逻辑不佳
执行的诊断检查
诊断工作流评估函数 spp 的以下方面:
-
常规信息
- 托管计划类型(消耗、高级、专用、弹性)
- 运行时版本
- 平台 (Linux 或 Windows)
- 触发器类型和绑定
-
启动问题
- 应用启动期间的诊断事件
- 意外停机的脱机历史记录分析
-
最近部署
- 突出显示可能影响应用的部署
-
运行时和语言版本验证
- 确认使用受支持的版本
-
配置检查
- 验证必需的应用设置
- 验证 Key Vault 和托管标识配置
- 检查 SyncTrigger 问题
- 检测函数主机名冲突
-
扩展版本
- 标识过时或不受支持的扩展
-
托管计划设置
- 分析配置和缩放行为
- 检查 SNAT 端口耗尽、CPU 高和内存问题
- 包括风险警报:
- 对于专用计划:验证 AlwaysOn 是否已启用
- 对于弹性高级版:检查 VNet 路由和缩放
-
执行运行状况
- 检测:
- 执行失败
- 非triggering 函数
- 停滞或长时间运行的执行
- 检测:
-
AI 驱动的分析
- 使用 OpenAI 检测问题模式并提供上下文建议
Application Insights 查询
对于诊断,请在 Application Insights 中运行这些查询:
每个辅助角色的请求数(过去 30 分钟):
requests | where timestamp > ago(30m) | summarize count() by cloud_RoleInstance, bin(timestamp, 1m) | render timechart错误跟踪(过去 30 分钟):
traces | where timestamp > ago(30m) | where customDimensions.LogLevel == "Error"运行时异常(过去 30 分钟):
exceptions | where timestamp > ago(30m)
注释
采样功能默认处于启用状态。 如有必要,请在调查期间暂时禁用此功能。
有关详细信息,请参阅 分析 Application Insights 中的 Azure Function App 遥测数据。
网络验证程序工具
注释
此工具适用于除 Windows 和 Linux 消耗计划之外的所有托管计划。
如果应用显示错误, FAILED TO INITIALIZE RUN FROM PACKAGE.txt 或者 host.json not found,请使用 网络疑难解答 来解决这些错误。
若要访问该工具,请执行以下步骤:
- 登录到 Azure 门户。
- 导航到 “诊断”并解决问题。
- 搜索 连接疑难解答。
此工具检查以下项:
- DNS 解析
- 存储和 Key Vault 访问
- 出站限制(VNet、NSG、防火墙)
使用网络验证程序时,请确保:
- VNet 集成已正确配置。
- 没有建立终结点或防火墙块。
有关详细信息,请参阅以下资源:
Kudu 日志 (SCM)
注释
此工具适用于除 Linux 消耗和弹性消耗计划之外的所有托管计划。
有关如何访问和使用 Kudu 日志(SCM)的信息,请参阅 应用的 Access Kudu。
其他日志
-
主机日志:
%HOME%\LogFiles\Application\Functions\Host -
函数日志:
%HOME%\LogFiles\Application\Functions\Function\<your_triggername> -
系统级日志:
%HOME%\LogFiles\Eventlog.xml
有关详细信息,请参阅 了解 Azure 应用服务文件系统。