对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

Atlas Infinite 上的计算自动伸缩

本页介绍了 Atlas Infinite 集群上的集群层自动伸缩,其支持反应式和预测式两种集群层自动伸缩。要了解每种机制的工作原理,请参阅 集群层的反应式自动伸缩 和 集群层的预测式自动伸缩。

Atlas对集群层使用响应式和预测式自动伸缩。Atlas会根据集群的类型、层级和工作负载模式选择自动伸缩机制。

  • 响应式自动伸缩。Atlas使用阈值而不是预测来trigger基于当前资源使用情况的扩展事件。被动式自动伸缩发生在资源使用率持续偏高或偏低的情况下。要学习;了解更多信息,请参阅集群层的响应式自动伸缩。

  • 预测性自动伸缩。Atlas使用机器学习根据历史使用模式预测未来的扩展需求,并尝试在预测的工作负载峰值到来之前trigger扩展事件。

    预测性自动伸缩是集群层自动伸缩的扩展,可以回退到反应式自动伸缩。Atlas继续依靠响应式自动伸缩来管理非周期性或不可预测的意外工作负载峰值。Atlas对符合条件的集群使用预测性自动伸缩。要学习;了解更多信息,请参阅集群层的预测性自动伸缩。

注意

自动伸缩术语使用

在所有Atlas文档中,只要使用自动伸缩术语而不使用“预测”一词,则指的是响应式自动伸缩机制。另请参阅预测性自动伸缩。

您可以配置 Atlas 使用的集群层范围,以根据集群使用情况自动扩展集群层。

为了优化资源利用率并改善费用状况,Atlas反应式自动伸缩可检测持续较高的需求和短期峰值流量,并根据实时资源使用情况调整集群层。

为了帮助控制成本,您可以指定集群可自动伸缩到的最大和最小集群大小范围。

响应式自动伸缩以滚动方式运行,并且该进程不会导致任何停机。在此进程中, Atlas会维护一个主节点 (primary node in the replica set)节点,但节点会逐个升级,并且在升级时不可用。

要学习;了解可扩展性的建议,包括在使用具有响应式自动伸缩的基础架构即代码工具时避免资源漂移,请参阅Atlas架构中心的Atlas可扩展性建议。

Atlas 集群层响应式自动伸缩适用于 General 和 Low-CPU 集群类下的所有专用 Atlas Core 集群层。响应式自动伸缩也适用于 Atlas Infinite 集群。

在 Atlas Infinite 集群上,扩展集群层还会改变可用于集群的存储 IOPS 和存储吞吐量。要查看每个层级的存储性能值,请参阅 Atlas 无限存储 IOPs 和每个集群层的吞吐量值。

注意

您无法更新给定层级的存储性能值。要更改存储性能,请更改集群层。

Atlas依赖托管网络探测(ping)数据来做出自动扩展决策。无论是否启用了自动伸缩,专用集群数据节点都会持续将此网络探测(ping)数据发送到控制平面。启用自动伸缩后,如果满足扩展条件, Atlas可以立即使用这些历史数据进行扩展。

Atlas 可将您的集群扩展到同一类中的其他层。例如,Atlas 可将 General 集群扩展到其他 General 集群类型,但不会将 General 集群扩展到 Low-CPU 集群类型。

如果新的集群层超出指定的 Minimum 和 Maximum Cluster Size 范围,Atlas 不会扩展您的集群层。

如果您部署只读节点并希望集群更快地扩展,请考虑调整副本集扩展模式。

为了确保适当的集群资源利用率,确切的响应式自动伸缩标准可能会发生变化。

重要

对于专用的 Atlas Core 集群,如果您恢复的快照大于目标集群的存储容量,则集群不会自动扩展。

Atlas 使用以下资源利用率和操作准入控制概念来确定何时向上或向下扩展集群:

  • 绝对系统 CPU 利用率:节点上所有进程的总 CPU 使用率。在 Atlas 指标中显示为 系统 CPU。

  • 相对系统 CPU 利用率:Atlas 用于对 M10 和 M20 集群做出自动扩缩容决策的值。计算公式如下:

    Relative System CPU Utilization = Normalized System CPU / Baseline CPU Utilization

    其中:

    • 标准化系统 CPU:所有核心的总 CPU 使用率,标准化为基准 CPU 利用率。在 Atlas 指标中显示为 标准化系统 CPU。

    • 基准 CPU 利用率:云提供商保证提供给实例的完整 CPU 的一部分,对于可突发实例类型,通常为 20%-50%。在 Atlas 指标中不可见。要了解更多信息,请参阅 基准 CPU 利用率。

      示例,使用 20% 作为 Baseline CPU Utilization 的低端估算值,以下 Relative System CPU Utilization 值对应于 Atlas 指标中的这些 标准化系统 CPU 值:

    即使计算结果超过该值,Atlas 也会将 Relative System CPU Utilization 限制为 100%。如果 Normalized System CPU 看起来较低时发生扩展,请联系 MongoDB 支持。

  • 系统内存利用率:节点上所有进程的总内存使用量,以节点可用总内存的百分比表示。计算方式如下:

    System Memory Utilization = Memory Used / Total Memory * 100

    其中:

    • 已用内存:托管上当前使用的物理内存字节数。在 Atlas 指标中显示为 系统内存:已用内存(字节)。

    • 总内存:节点可用的物理内存总量,由操作系统报告。Atlas 不会将此值显示为单独的指标。在 Atlas 指标中不可见。

    注意

    Atlas 用于自动扩展决策的 System Memory Utilization 值可能与 Atlas 指标面板中显示的值略有不同。如果 System Memory Utilization 看起来较低时没有发生缩减,请联系 MongoDB 支持。

  • 已排队或已拒绝的操作:作为智能工作负载管理 (IWM) 的一部分,Atlas 为保护您的集群免受过载而排队或拒绝的操作的综合速率。Atlas 的计算方式如下:

    Queued or Rejected Operations = Queued Operations + Rejected Operations

    其中:

    要了解 IWM 如何通过排队或拒绝操作来响应集群过载,请参阅智能工作负载管理。

    组合值大于零意味着您的集群处于过载状态。

以下各节介绍了 Atlas 如何使用这些指标来确定何时纵向扩展或缩减您的集群。

为了管理应用程序的动态工作负载,Atlas会在本节描述的条件下扩展集群中的节点。

为实现最佳资源利用率和成本配置,Atlas 会在以下情况下避免将集群扩展到下一个层级:

  • M10 或 M20 集群在过去 20 分钟或 1 小时内已进行扩展,具体取决于阈值。

  • M30+ 集群在过去 10 分钟或 1 小时内已进行扩展,具体取决于阈值。

  • 集群在过去 10 分钟内已针对 Queued or Rejected Operations 标准进行了扩展。

例如,如果自 12:00 以来集群层没有发生变化,则当集群的当前标准化系统 CPU 利用率大于 90% 时,Atlas 将在 12:10 扩展 M30+ 集群。

如果下一个集群层级在您的 Maximum Cluster Size 范围内,且该类型集群中的任意一个节点至少满足以下条件之一,Atlas 会将集群中的操作节点扩展至下一层级。

注意

本节中的条件描述了操作节点。对于任意云提供商上的分析节点,如果过去一小时内平均 Normalized System CPU 或 System Memory Utilization 超过任一集群节点可用资源的 75%,Atlas 便会将这些节点扩展到下一个层级。Atlas 不会将 Queued or Rejected Operations 标准应用于分析节点。

以下列表按集群层对标准进行了分组。在每个层级中,与 CPU 相关的标准首先出现,其次是与内存相关的标准。在这两组标准中,特定于云提供商的标准首先出现。其余标准按从最严格到最不严格的顺序排列。过载标准适用于每个专用层级,并最后出现。

  • M10 和 M20 个集群:

    • AWS。在过去 20 分钟内,平均标准化 Relative System CPU Utilization 已超过 90%;而在过去 3 分钟内,非标准化的平均 Absolute System CPU Utilization 对于 CPU 窃取已超过 30% 。

    • Azure。过去 20 分钟内,标准化的平均 Relative System CPU Utilization 已超过 90% ,在过去 3 分钟内,softIRQ 的非标准化平均 Absolute System CPU Utilization 已超过 10% 。

    • 过去 20 分钟内,平均归一化 Absolute System CPU Utilization 已超过集群可用资源的 90%。

    • 过去一小时内,平均归一化 Relative System CPU Utilization 已超过集群可用资源的 75%。

    • 过去 10 分钟内,平均System Memory Utilization已超过集群可用资源的 90%。

    • 过去一小时内,平均 System Memory Utilization 已超过集群可用资源的 75%。

    注意

    如果在 Normalized System CPU 显得较低时发生扩展,联系MongoDB Support。

  • M30+ 集群:

    • 过去 10 分钟内,平均Normalized System CPU已超过集群可用资源的 90%。

    • 过去一小时内,平均 Normalized System CPU 已超过集群可用资源的 75%。

    • 过去 10 分钟内,平均System Memory Utilization已超过集群可用资源的 90%。

    • 过去一小时内,平均 System Memory Utilization 已超过集群可用资源的 75%。

  • 所有专用集群,M10+:

    • Queued or Rejected Operations 在过去 10 分钟内的每个示例中均保持在零以上。

      Atlas 要求速率在整个 10 分钟窗口内保持在零以上,而不是取平均值,因此在短时间流量激增期间短暂的排队或拒绝操作不会扩展您的集群。持续的负载削减表明您的工作负载超过了当前层级所能承受的范围,因此 Atlas 会进行扩展以缓解过载。

      注意

      此标准衡量的是 Atlas 是否进行了负载削减,而不是削减了多少。任何高于零的持续速率都符合该阈值。

这些阈值可确保集群在高负载时快速扩展,从而保持其性能和可靠性。

注意

在模拟区域服务中断期间, Atlas不会trigger集群层自动伸缩。如果集群没有足够的健康节点来支持扩展操作,则在实际区域服务中断期间也可能会出现此行为。

重要

工作负载突然激增

扩展至更大的集群层需要足够的时间来准备后备资源。当集群接收到大量活动(如批量插入)时,可能不会进行自动伸缩。为了降低资源耗尽的风险,请计划在批量插入和其他工作负载高峰之前扩展集群。

考虑一个包含以下值的示例场景,了解 Atlas 如何评估扩展条件。基准 CPU 利用率在 Atlas 指标面板中不可见,对于可突发实例类型,其范围可能为 20%-50%。您可以使用该范围内的任何值来估算上限和下限,此示例使用 20% 作为该范围的下限。

评估条件:

条件 1 (AWS):要求平均相对系统 CPU 利用率 > 90%,持续 20 分钟,并且平均CPU 占用 > 30%,持续 3 分钟。

  • 相对 CPU:60% ÷ 20% = 300%,上限为 100%。已达到第一个阈值。

  • CPU 窃取为 10%,但不超过 30%。未达到第二个阈值。

  • 结果:条件 1 未满足。两个阈值都必须为真。

条件 2:要求平均值 Normalized System CPU > 90%,持续 20 分钟。

  • 标准化系统 CPU 为 60%,不超过 90%。

  • 结果:条件 2 未满足。

条件 3:要求平均相对系统 CPU 利用率 > 75%,持续 1 小时。

  • 相对 CPU:60% ÷ 20% = 300%,上限为 100%。

  • 结果:条件 3 已满足。Atlas Triggers 自动伸缩。

为了优化费用,Atlas会在本节描述的条件下以被动方式缩减集群中的节点。

Atlas从启用缩减的那一刻起就开始检查这些条件,而不是追溯检查。即使您的集群在启用缩减之前满足这些条件, Atlas不会扩展,直到启用该功能后经过了所需的时间窗口。

如果下一个最低集群层处于 Minimum Cluster Size 范围内,且集群中的所有节点均满足以下所有条件,Atlas 则会将集群中的节点扩展为下一个最低层级:

  • 所有节点:

    • Atlas 在过去的 24 小时内没有缩小集群(无论是手动还是自动)。

    • 在过去 24 小时内,Atlas 没有预配或恢复集群的运行。

    • Atlas在过去 12 小时内未停止和重新启动任何集群节点。

  • 操作节点:

    • 至少在过去 10 分钟 和 过去 4 小时内,平均 Normalized System CPU 低于集群可用资源的 45%。Atlas使用“4 小时平均值”检查点来指示 CPU 负载已稳定在观察到的水平上。Atlas使用“10 分钟平均”检查点作为指标,表明最近没有发生任何 CPU 峰值,而Atlas未使用“4 小时平均”检查点捕获。

      注意

      对于 M10 和 M20 层级, Atlas 应用相对于实例基准 CPU 利用率的 45% CPU 阈值,而不是标准的 100% 基准。使用 20% 作为下限估计值,缩减的有效绝对 CPU 阈值约为 9%(20% 的 45%)。

    • 在当前的集群层大小水平上,平均 WiredTiger 缓存使用量在至少过去 10 分钟和过去 4 小时内低于最大 WiredTiger 缓存大小的 90%。它向 Atlas 表明当前集群没有出现过载。

    • 在新的较低集群层水平,Projected Memory Utilization 在至少过去 60 分钟和过去 10 小时内低于 4%。

      要计算 Projected Memory Utilization,Atlas 从当前内存使用量开始,在 Atlas 指标中可见为 系统内存:已使用内存(字节)。Atlas 减去当前的 WiredTiger 缓存80 使用量,在新的较低层级上添加最大 WiredTiger 缓存大小的 %,然后将结果除以该层级的总 RAM 大小。

      此值与 System Memory Utilization 不同,后者衡量的是当前层级上所有正在使用的内存与 RAM 的对比情况。

      注意

      Atlas 在此计算中包含 WiredTiger 缓存,以使具有完整缓存但流量较低的集群更有可能向下扩展。缩小扩展要求以下两个阈值都通过:

      • 90%:当前层级的 WiredTiger 缓存使用率必须低于其最大大小的 90%。

      • 60%:新层级上的 Projected Memory Utilization 必须低于 60%。

    这些条件可确保 Atlas 缩减集群中的操作节点,防止出现高利用率状态。

    注意

    Atlas 使用 **预计内存利用率** 评估基于内存的扩展,这与System Memory Utilization Atlas 用户界面中显示的 不同。如果 System Memory Utilization 显示较低但未发生缩减,请联系 MongoDB 支持。

  • 分析节点:

    • 过去 24 小时的平均 Normalized System CPU 和 System Memory Utilization 低于集群可用资源的 50%。

    注意

    M10 和 M20 集群使用较低的阈值来考虑云提供商在突发周期后设置的 CPU 使用上限。这些阈值因您的云提供商和集群层而异。

预测性自动伸缩是自动伸缩的扩展。

Atlas使用需求预测来预测托管资源利用率,并先发制人地扩展集群计算,以确保实现最佳资源利用率。通过预测性自动伸缩,Atlas尝试在周期性工作负载峰值之前主动扩展集群。

预测性自动伸缩由...提供支持基于历史模式的机器学习模型提供支持。Atlas分析主节点 (primary node in the replica set)节点上的资源利用率以做出扩展决策。该模型根据历史使用模式预测资源利用率何时较高,如果模型预测资源利用率较高,则Atlas会扩展集群。MongoDB不断更新模型及其标准,以优化Atlas性能。

该模型分析滚动的 4 周输入窗口,以确定周期性模式。可以捕获在此窗口内可观察到的任何模式,示例每小时、每天、每周或每两周一次的周期。周期较长的模式(例如月度或季度周期)位于 4 周窗口之外,因此无法检测到。

注意

对于接近窗口上限的模式,精度可能会降低,因为窗口内出现的完整周期较少。

预测性自动伸缩对于具有预测性、周期性工作负载的集群具有以下好处:

  • 在 4 周的输入窗口内针对周期性工作负载模式自动扩展集群。

  • 在可预测的高需求期间保持一致的性能和可用性。

  • 让Atlas托管容量增加,从而减少手动扩展任务或计划脚本。

  • 当集群工作负载的变更超出可预测模式且非周期性或不可预测时,无缝回退到响应式自动伸缩。

要触发预测性自动伸缩,您的集群必须连续维护活动日志两周。一旦满足此标准,系统就会启用预测性自动伸缩。

注意

如果暂停集群,则预测性自动伸缩需要连续两周的活动才能恢复。

以下声明描述了预测性自动伸缩的工作原理:

  • Atlas会尝试在预测负载到达之前扩展集群实例大小。

  • 当Atlas根据预测指标对集群进行预测性扩展时,它一次最多可以扩展两个层级。

  • 预测性自动伸缩仅应用于计算,不应用于存储。

  • 预测性自动伸缩遵循现有自动伸缩的最小和最大实例大小。

  • 当Atlas无法使用预测性自动伸缩来扩展集群时,它会转而使用响应式自动伸缩。

  • 预测性自动伸缩仅支持升级。不存在预测性扩展缩减。Atlas使用响应式自动伸缩,在工作负载减少时自动扩展集群规模。

  • 如果预测性扩展计划在下一个 1 小时内进行,Atlas会跳过被动式下行扩展。

Atlas对符合条件的集群使用预测性自动伸缩。符合预测性自动伸缩的集群必须满足以下所有条件:

  • 属于 General 和 Low-CPU集群类。

  • 具有 M30 或更高的层级。

  • 启用自动伸缩。如果启用向下扩展,自动伸缩的最小实例大小必须等于或大于 M30。

  • 已活跃至少两周。

M30 层级及以上的 Atlas Infinite 集群运行在 Amazon Web Services Gen2 硬件上。预测性自动伸缩支持这些集群。

此外,以下条件会影响Atlas是否对符合条件的集群使用预测性自动伸缩:

  • 预测性自动伸缩仅应用于可选节点和只读节点。Atlas 不会对搜索或分析节点使用预测性自动伸缩。

  • 预测性自动伸缩可能无法预测任何符合条件的集群中的非周期性和高度动态的工作负载峰值。在这些情况下,Atlas依赖于响应式自动伸缩。

您可以在“编辑集群”页面中手动减少集群层。手动扩展集群层时,应用以下事项:

  • 估算部署的工作负载范围,然后将 Minimum Cluster Size 的值设置为具有足够容量来处理部署工作负载的集群层。请考虑集群活动中任何可能的峰值或低谷。

  • 您无法扩展到小于 M10 的集群层。

在创建或修改集群时,您可以配置自动伸缩选项。Atlas 建议为 Atlas Infinite 集群使用计算自动伸缩。您可以在创建或修改集群时选择是否使用它。

您可以执行下列操作之一:

  • 查看并调整 Atlas 在自动扩展集群时应使用的集群层上限和下限,或者

  • 选择退出,不使用自动缩放。

Atlas 会在集群构建器的 Auto-scale 部分显示 General 和 Low-CPU 层集群的自动伸缩选项。

在使用 Atlas CLI 或 Atlas Administration API 创建或更新集群时,您可以启用计算自动伸缩。以下示例展示了如何为可选举节点和分析节点启用计算自动伸缩。将集群层和提供商设置替换为您需要的设置。

要使用 Atlas CLI 配置自动伸缩,请创建包含自动伸缩配置的 JSON 文件,然后根据 atlas api clusters updateCluster 命令的说明指定该配置。

要查看已为集群层启用的自动伸缩选项,请执行以下操作:

1

在选定的Auto-Scale复选框中,检查Maximum Cluster Size和Minimum Cluster Size值,并根据需要进行调整。

2

查看在 Atlas UI 中创建新集群时默认选中的 Allow cluster to be scaled down 选项。

要选择退出集群自动伸缩(增加集群层),请在创建新集群时导航到 Cluster Tier(集群层)菜单,然后取消选中 Auto-scale(自动伸缩)部分中的 Compute Auto-Scale(集群层伸缩)复选框。

要选择禁用集群自动缩放(降低集群层),请在创建新集群时导航至 Cluster Tier(集群层)菜单,然后取消选中 Auto-scale(自动伸缩)部分的 Allow cluster to be scaled down(允许集群缩减)复选框。