Docs 菜单
Docs 主页
/
Atlas
/ /

写入阻塞

如果Atlas发现集群的主节点 (primary node in the replica set)节点超过写入阻塞 策略阈值,则Atlas会阻止写入集群,直到磁盘利用率低于解锁阈值。当MongoDB收到对集群的写入时,它会将数据批量刷新到磁盘,这可能会导致磁盘利用率大幅跃升。主节点 (primary node in the replica set)节点上的磁盘空间不足可能会导致集群停机,尤其是当所有副本集节点的磁盘空间都级联耗尽时。

为了防止这种情况,当Atlas观察到集群的主节点 (primary node in the replica set)节点磁盘超过关键写入阻塞策略阈值时, Atlas会阻止写入集群的主节点 (primary node in the replica set)节点。Atlas继续阻止写入,直到磁盘利用率低于解锁阈值。

通过在主节点 (primary node in the replica set)节点上激活写入阻塞行为, Atlas可以:

  • 防止由于主节点 (primary node in the replica set)节点上的磁盘耗尽而导致集群不可用。

  • 允许集群以接近最大存储利用率的速度运行,以便在写入量突然激增的情况下保持读取可用性。

集群写入阻塞行为是MongoDB Atlas中智能工作负载管理 (IWM) 的一部分。IWM 是一种动态资源管理器,可实现实时工作负载监控和自动防护,从而在负载下保持高可用性。

写入阻塞行为有以下考虑因素:

  • Atlas目前会阻止写入运行MongoDB 8.0+ 的专用集群上副本集(非分片集群)的主节点 (primary node in the replica set)节点。

  • Atlas不会区块对免费集群和 Flex 集群的写入。

  • Atlas仅监控主节点 (primary node in the replica set)节点上的磁盘利用率。

  • Atlas不会监控从从节点(secondary node from replica set)、只读节点、搜索或分析节点上的磁盘利用率。

为了区块写入, Atlas使用以下进程:

为防止出现写入阻塞行为并使集群低于Atlas写入阻塞策略阈值,我们建议您:

  • 启用存储自动伸缩,在磁盘利用率超过 90% 时自动伸缩集群存储,并确保一致的工作负载可用性和性能。

    要在Atlas用户界面中启用存储自动伸缩,请导航到 Cluster Tier 菜单并选中 Auto-scale 部分中的 Storage Scaling 复选框。

    • 对于您在Atlas用户界面中创建的所有新集群, Atlas默认启用存储自动伸缩。

    • 如果您使用API创建集群,则默认下不会选择集群自动伸缩,您必须使用“在一个项目中更新一个集群”端点的 autoScaling对象中的选项显式启用伸缩。

  • 如果您选择退出存储自动伸缩,并且磁盘利用率接近 90%,则可以在Atlas激活集群上的写入阻塞行为之前发布现有磁盘空间:

Atlas使用以下写入阻塞阈值来适应具有高写入量的磁盘使用场景:

磁盘大小 < 20 GB

当可用磁盘空间降至 600 MB 以下时, Atlas会阻止写入。当磁盘空间超过 900 MB 时, Atlas会解锁写入。

磁盘大小 < 1.25TB

当可用磁盘空间降至总磁盘大小的 4% 以下时, Atlas会阻止写入。当磁盘空间超过磁盘总大小的 6% 时, Atlas会解锁写入。

磁盘大小 ≥ 1.25TB

当可用磁盘空间降至 50 GB以下时, Atlas会阻止写入。当可用磁盘空间超过 75 GB时, Atlas会解除写入阻止。

阈值不可配置。如果磁盘大小由于自动伸缩增加,或者如果您手动增加磁盘大小, Atlas会根据集群的磁盘大小自动调整阈值。

在集群中启用写入阻塞行为后,您可以:

  • 可以从“编辑集群”页面手动增加集群存储,或在Atlas用户界面中启用存储自动伸缩,以避免将来出现任何写入阻塞行为。

  • 无法删除索引或集合,因为Atlas会阻止需要写入数据库的操作。要删除索引和集合,请增加集群存储。

当主节点 (primary node in the replica set)节点上的可用磁盘空间达到磁盘总大小的96 % 左右时, Atlas会阻止写入,写入阻止策略阈值中会注明针对小型和大型磁盘的注意事项。

相比之下,当磁盘利用率达到磁盘总大小的 90% 时,就会触发自动伸缩。这意味着:

  • 如果您启用自动伸缩,您的集群就有机会在写入阻塞行为激活之前进行扩展。

  • 如果禁用自动伸缩,则必须监控磁盘利用率并采取动作防止激活写入阻塞行为。

当Atlas阻止写入集群时,会发生以下操作:

  • Atlas用户界面中集群页面的顶部会显示一个横幅,表示写入已被阻止。请参阅Atlas如何阻止写入主节点。

  • Atlas会发出写入阻塞警报,您可以通过增加集群存储来解决这些警报。另请参阅修复存储问题。

  • 项目的操作日志会反映这些警报。

  • Atlas日志返回类似于以下内容的 MongoServerErrorUser writes blocked, reason: DiskUseThresholdExceeded

  • serverStatus 命令中的 userWriteBlockMode 参数反映了集群的当前写入阻塞状态。

当可用磁盘空间增加 50% 而超过阻塞阈值时, Atlas会解除写入阻塞。用于解锁写入的额外的缓冲区可确保:

  • Atlas不会快速连续启用和禁用写入阻塞行为。

  • 集群在开始再次接受写入时保持良好状态。

有关确切参数,请参阅写入阻塞策略阈值。

后退

自动伸缩 (Auto-Scaling)

在此页面上