解决“函数应用关闭或报告错误”问题

常见方案、错误消息和症状

Microsoft Azure Function App 故障通常分为三个主要类别:配置问题、客户代码问题和平台问题。 本文详细介绍了这些问题,并介绍了相应的诊断工具进行故障排除。

配置问题

这些问题最常见。 它们包括:

客户代码问题

这些问题具有以下原因:

  • 导致 CPU 或内存使用率高、SNAT 耗尽或运行时异常(例如除以零或 null 引用)的故障代码模式。
  • 由于超时约束,长时间运行的或低效的函数在消耗计划中尤其存在问题。

有关详细信息,请参阅以下资源:

平台问题

这些问题不太常见,但通常会产生更大的影响:

典型的错误消息

可能会遇到常见错误,例如:

要监视的症状

  • 函数未触发或运行。 请参阅 在 Application Insights 中分析 Azure Function App 遥测数据。

  • 缺少调用历史记录或意外间隔。

  • 高资源消耗(由检测器标记的 CPU 或内存峰值)。

  • 超时或长时间响应时间,尤其是消耗计划(最多为 230 秒)。

  • 概述页上未列出的函数。

诊断工具

若要识别和解决问题,可以在 Azure 门户中使用以下工具。

函数应用关闭或报告错误(预览版)

若要访问此工具,请执行以下步骤:

  1. 登录到 Azure 门户
  2. 打开 Function App
  3. 选择“诊断和解决问题”。
  4. 搜索 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,请使用 网络疑难解答 来解决这些错误。

若要访问该工具,请执行以下步骤:

  1. 登录到 Azure 门户
  2. 导航到 “诊断”并解决问题
  3. 搜索 连接疑难解答

此工具检查以下项:

  • 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 应用服务文件系统