Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Cómo gestionar los errores de sobrecarga provocados por los cortes de suministro eléctrico.

La sobrecarga se produce cuando el clúster recibe más operaciones de las que sus recursos pueden procesar, lo que puede provocar una interrupción total o casi total del servicio. La función de Reducción de Carga, integrada en la Gestión Inteligente de Cargas de Trabajo (IWM), permite a Atlas rechazar operaciones durante una sobrecarga prolongada. Para configurar la Reducción de Carga en su clúster, consulte la sección «Configurar la Gestión Inteligente de Cargas de Trabajo».

Cuando la función de reducción de carga rechaza una operación, su aplicación podría ver un nuevo error para esa operación con la etiqueta SystemOverloadedError. Este error indica que su clúster está sobrecargado y está reduciendo las operaciones.

Si utiliza una biblioteca cliente que tenga en cuenta la contrapresión, esta reconocerá estos errores y reintentará aquellos que sean seguros. Su aplicación seguirá controlando cuánto tiempo se deben seguir reintentando y cuándo se debe reducir la carga. Para obtener más información, consulte Manejo de errores de sobrecarga.

La etiqueta SystemOverloadedError por sí sola no significa que la operación se pueda reintentar de forma segura. Para determinar si un error de sobrecarga se puede reintentar, compruebe las siguientes etiquetas:

  • RetryableError - la operación no se ejecutó y es seguro reintentarlo

  • NoWritesPerformed - El servidor rechazó la operación antes de realizar cualquier escritura.

El siguiente ejemplo muestra un error de sobrecarga que devuelve Atlas cuando la función de reducción de carga rechaza una operación:

{
"ok": 0.0,
"errmsg": "Request rejected: ingress operation rate limit exceeded",
"code": 463,
"codeName": "IngressOperationRateLimitExceeded",
"errorLabels": ["SystemOverloadedError", "RetryableError", "NoWritesPerformed"]
}

Importante

Si un error de sobrecarga no incluye la etiqueta RetryableError, asegúrese de que la operación sea idempotente y espere antes de reintentar para evitar contribuir a la sobrecarga. Utilice retroceso exponencial y fluctuación en su lógica de reintento.

Los drivers conscientes de contrapresión y otras bibliotecas cliente reconocen automáticamente los errores de sobrecarga con la etiqueta SystemOverloadedError y los tratan como una señal de sobrecarga. Si el error tiene una etiqueta que induce un reintento, incluida la etiqueta RetryableError, la biblioteca cliente con reconocimiento de contrapresión vuelve a intentar automáticamente la operación con retroceso exponencial y jitter.

La siguiente tabla enumera las versiones más antiguas de las Librerías de clientes que son compatibles con la comprensión de presión inversa:

Librerías de clientes
Primera versión con reconocimiento de Backpressure

Controlador de C

2.5

Controlador C++

4.6

Controlador .NET/C#

3.11

Driver de Go

2.9

Java Sync Driver

5.12

Driver de Java Reactive Streams

5.12

driver de Kotlin corrutina

5.12

Driver de sincronización de Kotlin

5.12

Driver de Nodo.js

7.6

Biblioteca PHP

2.5; requiere mongodb extensión PHP (PHPC) 2.5.0+

PyMongo

4.18

Controlador de Scala

5.12

Ruby

2.26

Rust

3.9

Gestiona los errores de sobrecarga en tu aplicación, incluso si utilizas una biblioteca cliente compatible con la contrapresión. Estas bibliotecas reintentan las operaciones marcadas como reintentables, pero tu aplicación decide cuánto tiempo continuar reintentando y cuándo reducir la carga abandonando las operaciones que el clúster sigue rechazando. Si no utilizas una biblioteca cliente compatible con la contrapresión, implementa tú mismo la lógica de detección de errores y reintentos.

Consulte el siguiente procedimiento para ver ejemplos de cómo implementar la detección de errores y la lógica de reintento con retroceso exponencial para manejar errores de sobrecarga que están etiquetados como reintentables:

Utilice el siguiente procedimiento para implementar utilidades que detecten errores por sobrecarga y reintenten con retroceso exponencial.

Al reintentar operaciones que fallaron debido a un error de sobrecarga, utilice las siguientes directrices para evitar contribuir a la sobrecarga y aumentar las posibilidades de reintentos exitosos:

  • Limita los intentos de reintento: utiliza un máximo de dos reintentos por operación. Un límite mayor reduce la tasa de errores, pero aumenta la carga del servidor durante situaciones de sobrecarga, mientras que un menor número de intentos de reintento puede reducir la carga del servidor, pero aumenta la tasa de errores.

  • Aplica selectivamente: Utiliza este patrón solo para operaciones sensibles a la latencia o críticas para el negocio. Para cargas de trabajo en segundo plano, registrar errores y reintentar a un nivel superior con retrasos más prolongados.