Azure API 管理实例的容量

容量是最重要的 Azure Monitor 指标,在是否扩展或升级 API 管理实例以容纳更多负载方面,它可以帮助做出明智的决策。 容量的构造比较复杂,并且会施加特定的行为。

本文介绍容量的定义及其行为。 其中介绍了如何在 Azure 门户中访问容量指标,并建议何时应考虑扩展或升级 API 管理实例。

重要

本文介绍如何基于容量指标来监视和缩放 Azure API 管理实例。 但是,同样重要的是要了解当单个 API 管理实例实际上达到其容量时会发生什么情况。 Azure API 管理不会应用服务级别限制来防止实例的物理过载。 当实例达到其物理容量时,它的行为将类似于任何无法处理传入请求的过载 Web 服务器:延迟将增加,连接将丢弃,将发生超时错误,等等。 这意味着 API 客户端应该准备好处理这种可能性,就像处理任何其他外部服务一样(例如,通过应用重试策略)。

先决条件

若要执行本文中的步骤,必须提供:

可用性

重要

此功能在 API 管理的“高级”、“标准”、“基本”和“开发人员”层中可用 。

容量指标的 Max 聚合仅在 API 管理的高级层中受支持。

什么是容量

Diagram that explains the Capacity metric.

容量是 API 管理实例中负载的指标。 它反映资源(CPU、内存)用量和网络队列长度。 CPU 和内存用量反映以下对象的资源消耗量:

  • API 管理数据平面服务(如请求处理)可以包括转发请求或运行策略。
  • API 管理的管理平面服务,例如通过 Azure 门户或 Azure 资源管理器应用的管理操作,或者来自开发人员门户的加载操作。
  • 选定的操作系统进程,包括在新连接上造成 TLS 握手开销的进程。
  • 平台更新,例如实例基础计算资源的 OS 更新。
  • 部署的 API 数量(无论是否处于活动状态)都可能会消耗额外的容量。

容量是 API 管理实例的每个单元中容量自有值的平均值。

虽然容量指标旨在显示 API 管理实例出现的问题,但是在某些情况下,问题不会反映在容量指标的更改中。

容量指标行为

由于这种构造,在现实中,容量可能受到多种可变因素的影响,例如:

  • 连接模式(是根据请求创建新连接,还是重复使用现有连接)
  • 请求和响应的大小
  • 在每个 API 中配置的策略数,或发送请求的客户端数。

请求中的操作越复杂,容量消耗就越高。 例如,复杂转换策略消耗的 CPU 比简单的请求转发要高得多。 后端服务响应速度较慢也会增大消耗量。

重要

容量不是所处理请求数量的直接度量值。

Capacity metric spikes

容量还可能会出现间歇性的高峰或大于零,即使未处理任何请求。 之所以发生这种情况,是因为存在系统或平台特定的操作。在决定是否缩放实例时,不应考虑这些因素。

容量指标并不一定意味着 API 管理实例没有遇到任何问题。

使用 Azure 门户检查容量

Capacity metric

  1. Azure 门户中导航到自己的 API 管理实例。

  2. 在左侧菜单中的“监视”下,选择“指标”。

  3. 从可用指标中选择“容量”,并保留默认的“平均值”聚合。

    提示

    如果已将实例部署到多个位置,则始终应该查看每个位置的容量指标明细,以避免解释错误。

  4. 若要按位置拆分指标,请在顶部部分选择“应用拆分”,然后选择“位置”。

  5. 从该部分的顶部栏中选择所需的时间范围。

    可以设置指标警报,以便在发生意外的情况时收到通知。 例如,当 API 管理实例超出预期峰值容量有 20 分钟以上时收到通知。

    提示

    可以配置警报,以便在服务容量不足时知道这种状况;或者使用 Azure Monitor 自动缩放自动添加 Azure API 管理单元。 缩放操作可能需要大约 30 分钟,因此请相应地安排规则。
    只允许缩放主要位置。

使用容量做出缩放决策

在是否扩展 API 管理实例以容纳更多负载方面,容量指标可以帮助做出决策。 下面是一般注意事项:

  • 查看长期趋势和平均值。
  • 忽略往往与负载提高无关的突发高峰(请参阅容量指标行为部分中的说明)。
  • 一般规则是,在容量值长时间(例如 30 分钟)超过 60% - 70% 时升级或扩展实例。 不同的值可能更适合服务或方案。
  • 如果仅为实例配置了 1 个单元,则在容量值长时间超过 40% 时升级或扩展实例。 这项建议的依据是需要为基础服务平台中的来宾 OS 更新预留容量。

提示

如果能够事先估算流量,请在预期的工作负荷上测试 API 管理实例。 可在租户中逐渐增大请求负载,并监视哪个容量指标值对应于峰值负载。 遵循上一部分中的步骤,使用 Azure 门户了解在任意给定时间使用的容量。

后续步骤