Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs 菜单
Docs 主页
/ /

过载错误

Atlas中的智能工作负载管理 (IWM) 策略属于减载策略,即它们会拒绝或终止操作,以使集群在过载情况下保持健康。当这些策略生效时,您的应用程序可能会发现由于服务器过载而被服务器拒绝或终止的操作的新错误。这些过载错误带有SystemOverloadedError 标签。

以下负载卸载 IWM 策略在拒绝或终止操作时会返回错误:

反压感知型驱动程序和其他客户端端库会自动识别带有 SystemOverloadedError 标签的过载错误,并将其视为过载信号。如果错误具有导致重试的标签(包括 RetryableError 标签),则反压感知客户端端库会自动使用指数退避和抖动重试操作。

下表列出了具有反压感知功能的最早客户端端库版本:

客户端库
最早的背压感知版本

C 驱动程序

2.3

C++ 驱动程序

4.3

.NET/C# 驱动程序

3.8

Go 驱动程序

2.6

Java (Sync) 驱动程序

5.7

Java Reactive Streams 驱动程序

5.7

Kotlin Coroutine 驱动程序

5.7

Kotlin Sync 驱动程序

5.7

Node.js 驱动程序

7.2

PHP库

2.3

pymongo

4.17

Scala 驱动程序

5.7

如果您使用的是反压感知客户端端库,则无需实现任何额外的重试逻辑来处理IWM 策略的过载错误。如果您使用的不是反压感知的客户端端库,请参阅处理过载错误以获取指导。

如果您使用的不是反压感知客户端端库,请参阅以下过程,了解如何使用指数退避算法实现错误检测和重试逻辑以处理过载错误:

使用以下过程实现实用程序,以检测过载错误并使用指数退避重试。

重试因过载错误而失败的操作时,请遵循以下准则,避免导致过载并增加重试成功的机会:

  • 限制重试次数:每个操作最多重试 2次。较高的限制可降低错误率,但会增加过载期间的服务器负载,而较少的重试尝试可降低服务器负载,但会增加错误率。

  • 有选择地应用:仅将此模式用于对延迟敏感或业务关键型操作。对于背景工作负载,日志错误并在更高级别重试,延迟时间更长。

后退

查询哨兵

在此页面上