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

Reducción de carga de consultas y rechazo de consultas

El proceso de búsqueda de MongoDB (mongot) ejecuta consultas en un grupo de ejecución fijo. Cuando llegan consultas más rápido de lo que el proceso puede procesarlas, Atlas las almacena en una cola de control de admisión en lugar de ejecutarlas todas a la vez. La gestión de la carga de búsqueda controla esta cola. Protege el proceso de búsqueda del agotamiento de la memoria y del colapso de latencia que se produce cuando un proceso acepta más trabajo concurrente del que puede completar.

La función Search Load Shedding se aplica tanto a las consultas $search como a las $vectorSearch. Está disponible en clústeres que ejecutan MongoDB 8.0, 8.3 y 9.0 o posterior, y Atlas la habilita de forma predeterminada en clústeres que ejecutan MongoDB 9.0 o posterior.

Cuando el proceso de búsqueda alcanza su capacidad máxima de ejecución, Atlas pone en cola las consultas entrantes. Estas se ejecutan cuando se libera capacidad, por lo que se completan correctamente, pero con una latencia mayor de lo habitual. La latencia se mantiene elevada hasta que la tasa de llegada de consultas cae por debajo de la tasa a la que el proceso puede admitir trabajo.

En cualquier momento, una consulta puede estar ejecutándose en el grupo de ejecución, esperando en la cola de control de admisión o siendo rechazada. Solo una cola llena provoca el rechazo.

La reducción de la carga de búsqueda no cambia la cantidad de consultas que el proceso de búsqueda ejecuta simultáneamente. Solo cambia si la cola de control de admisión tiene un límite de capacidad:

  • Con una cola ilimitada, Atlas pone en cola todas las consultas adicionales. Las consultas siempre se ejecutan, pero una sobrecarga sostenida produce una latencia creciente.

  • Con una cola limitada, Atlas sigue poniendo en cola las consultas sobrantes, pero solo hasta alcanzar un límite de capacidad. Cuando la cola está llena, Atlas rechaza inmediatamente las consultas adicionales en lugar de añadir latencia para cada cliente.

Atlas establece internamente el tamaño del grupo de ejecución y la capacidad de la cola limitada, y puede cambiar estos límites en cualquier momento.

Para cuando Atlas comienza a rechazar consultas, la sobrecarga ya ha aumentado la latencia de las consultas que sí acepta. El rechazo reduce la carga sobrante, lo que evita que la latencia se degrade aún más. Además, mantiene el proceso de búsqueda activo en lugar de permitir que falle por completo.

Cuando Atlas rechaza una consulta porque la cola de control de admisión está llena, la consulta falla con el siguiente error:

Campo
Valor

Código de error

489

nombre en clave

SearchRequestRejectedDueToOverload

Etiqueta de error

SystemOverloadedError

Todas las versiones que admiten Search Load Shedding devuelven este mismo error, por lo que su aplicación puede basarse en un único contrato de error.

Importante

Las consultas rechazadas no se pueden volver a intentar.

El error 489 no lleva la etiqueta RetryableError. Ni los controladores de MongoDB ni mongod reintentan automáticamente una consulta rechazada. Su aplicación debe decidir cómo responder.

Un rechazo significa que el proceso de búsqueda ya está saturado. Reintentar inmediatamente añade carga a un proceso que no puede absorberla, lo que prolonga la sobrecarga y aumenta el número de rechazos. Para responder a un error 489, aplique las siguientes prácticas:

  • Capturar la etiqueta SystemOverloadedError en lugar de hacer coincidir el texto del mensaje de error.

  • Espera antes de volver a enviar la consulta. Utiliza un retroceso exponencial con fluctuación para que los clientes concurrentes no intenten enviar la consulta al mismo tiempo.

  • Limita el número de intentos. Muestra un resultado deficiente o un error al usuario final en lugar de reintentarlo indefinidamente.

  • Reduzca la frecuencia con la que su aplicación envía consultas de búsqueda mientras persisten los rechazos. Disminuir la concurrencia de clientes reduce la sobrecarga.

  • Considere los rechazos continuos como una señal de capacidad en lugar de una falla transitoria, y ajuste la escala u optimice su carga de trabajo de búsqueda.

Atlas informa sobre la puesta en cola antes de que se produzcan rechazos, lo que le da tiempo para actuar. Utilice las siguientes señales:

  • La métrica Search Process Throttling informa la frecuencia con la que el proceso de búsqueda indicó que había superado su límite de cola. Un valor distinto de cero sostenido significa que el trabajo llega más rápido de lo que el proceso puede procesarlo. Para ver esta métrica, consulte la sección "Revisar métricas de búsqueda de MongoDB".

  • La alerta MongoDB Search: Search Process is Overloaded se activa cuando la condición persiste durante 5 minutos. Para resolver esta alerta, consulte Solucionar problemas de búsqueda de MongoDB.

Para reducir la carga que llega al proceso de búsqueda, tome las siguientes medidas:

  • Implemente nodos de búsqueda para aislar la carga de trabajo de búsqueda, o actualice a un nivel de nodos de búsqueda con más vCPU.

  • Distribuye las consultas a lo largo del tiempo en lugar de enviarlas en ráfagas.

  • Optimiza tus consultas. Añade filtros, reduce los comodines iniciales y las cláusulas anidadas, y devuelve solo los campos que necesitas.

Configure la reducción de carga de búsqueda por clúster. La configuración acepta los siguientes estados:

Estado
API Value
Descripción

Atlas gestionado

Sin anulación

Atlas selecciona el estado en función de la versión de MongoDB que ejecuta su clúster. Atlas resuelve este estado a Off en MongoDB 8.0 y 8.3, y a On en MongoDB 9.0 o posterior.

on

true

La cola de control de admisión tiene un límite. Atlas pone en cola las consultas excedentes hasta alcanzar un límite de capacidad y, a continuación, rechaza las consultas adicionales con un error 489 mientras la cola esté llena.

Apagado

false

La cola de control de admisión no tiene límite. Atlas pone en cola todas las consultas que exceden el límite y nunca rechaza ninguna.

Utilice la interfaz de usuario de Atlas o la API de administración de Atlas para cambiar el estado.