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

Planificación de recursos y dimensionamiento de búsqueda y búsqueda vectorial

Esta página describe cómo dimensionar los pods mongot que sirven MongoDB Search y búsqueda vectorial en su clúster de Kubernetes. Útelo para elegir los valores iniciales de spec.clusters[].resourceRequirements, spec.clusters[].jvmFlags y spec.clusters[].persistence en el recurso MongoDBSearch y para planificar la capacidad de volumen persistente para el crecimiento del índice.

Antes de dimensionar mongot, revise el modelo de implementación y la topología que planea ejecutar:

Para ver el esquema completo de cada configuración a la que se hace referencia en esta página, consulte MongoDB Search y configuración de búsqueda vectorial.

La relación CPU-memoria que asigne depende del perfil de carga de trabajo de búsqueda.

Clase de carga de trabajo
Relación RAM-CPU
Usar cuando

High-CPU

2:1

Ejecuta una búsqueda de texto completo de propósito general en la que el rendimiento de la query consume mucha CPU.

Low-CPU

8:1

Ejecuta cargas de trabajo de búsqueda vectorial con volúmenes de datos más bajos, donde la memoria importa más que la CPU sin procesar.

Para la mayoría de los casos de uso generales, una configuración de CPU alta pequeña o mediana es un punto de partida equilibrado.

Dimensiona tus pods mongot por el volumen de datos vectoriales esperado (CPU baja) o por query por segundo (CPU alta).

Tamaño
CPU baja (búsqueda vectorial)
CPU alta (texto completo)

Pequeño

Hasta 10 GB de vectores

20 a 40 QPS, indexación ligera

Intermedio

10 GB a 50 GB de vectores

80 a 160 QPS

Grande

50 GB de vectores o más

320 a 480 QPS, indexación pesada

Por ejemplo, si esperas gestionar 100 queries por segundo en una aplicación de búsqueda de texto completo, comienza con una configuración de CPU alta media.

Establezca la CPU y la memoria para los pods mongot en spec.clusters[].resourceRequirements. El campo requests reserva capacidad en el nodo; el campo limits limita la cantidad que el pod puede consumir.

spec:
clusters:
- resourceRequirements:
requests:
cpu: "2"
memory: 4Gi
limits:
cpu: "3"
memory: 5Gi

Si omite spec.clusters[].resourceRequirements, el Operador de Kubernetes utiliza los siguientes valores por defecto:

  • requests.cpu: 2

  • requests.memory: 4Gi

  • No limits: el pod puede consumir todos los recursos disponibles del nodo.

Configura limits para ajustarlo a la carga de trabajo. Un pod sin límites puede saturar el nodo e impactar en otras cargas de trabajo.

Cuando no especifica -Xms o -Xmx en spec.clusters[].jvmFlags, el Operador de Kubernetes calcula automáticamente el montón de JVM estableciendo ambas marcas en la mitad de spec.clusters[].resourceRequirements.requests.memory.

Para anular el montón explícitamente, establezca -Xms y -Xmx en spec.clusters[].jvmFlags. El operador de Kubernetes no modifica ninguna de las marcas que proporcione y las agrega después de las marcas calculadas por el operador.

spec:
clusters:
- jvmFlags:
- -Xms2g
- -Xmx2g

Cada pod mongot tiene su propio volumen persistente que contiene los índices de búsqueda y vectoriales. Planifique el volumen para que contenga el índice más el espacio libre para las reconstrucciones.

El tamaño de una colección y el tamaño del índice de búsqueda resultante no siempre están correlacionados. El tamaño del índice depende de los campos que asigne y de las funcionalidades (como el autocompletado) que habilite en el índice. Para estimar el tamaño del índice para su carga de trabajo:

1

Inserta de 1 a 2 GB de datos, o crea una colección pequeña con $out.

2

Cree el índice de búsqueda con las asignaciones de campos que planea utilizar en producción.

3

Compare el tamaño del índice con el tamaño de la colección. Extrapole a partir de esta proporción para estimar el tamaño del índice a escala de producción. Por ejemplo, una colección de 1 GB que produce un índice de 250 MB (una proporción de 0.25:1) implica que una colección de 12 GB produce aproximadamente un índice de 3 GB.

Asigne double el espacio en disco que requiere su índice. El espacio extra permite que mongot reconstruya los índices cuando sea necesario. mongot se vuelve de solo lectura cuando el uso del disco alcanza el 90%.

Establezca el tamaño del volumen en spec.clusters[].persistence.single.storage utilizando sufijos de cantidad binaria:

spec:
clusters:
- persistence:
single:
storage: 60Gi
storageClass: local-nvme

Si omite spec.clusters[].persistence, el operador de Kubernetes aprovisiona un volumen predeterminado de 16 GB. Para un índice de 30 GB, establezca spec.clusters[].persistence.single.storage en 60Gi para dejar espacio para las reconstrucciones del índice.

Consulta el StorageClass para el volumen en spec.clusters[].persistence.single.storageClass. Elige una clase que cumpla con las siguientes orientaciones:

  • Tipo de disco: Utilice almacenamiento de uso general respaldado por SSD. Tanto las IOPS de lectura como las de escritura son importantes para el rendimiento de mongot. La replicación implica escrituras en disco para nuevos segmentos de índice y lecturas en disco cuando mongot fusiona segmentos antiguos en otros más grandes.

  • Umbral de solo lectura: Cuando un volumen alcanza el 90% de uso, mongot entra en modo de solo lectura y detiene las operaciones de escritura. Para reanudar los guardados, borrar los datos del índice para reducir el uso por debajo del 85%.

Después de la implementación, supervise los siguientes umbrales para confirmar que su dimensionamiento inicial es adecuado y para saber cuándo escalar.

Resource
umbral
Acción

CPU

Uso sostenido por encima del 80%

Aumente la CPU en spec.clusters[].resourceRequirements.requests y limits.

Memoria

mongot_system_process_majorPageFaults_operations sostenido por encima de 1000 por segundo

Aumente la memoria en spec.clusters[].resourceRequirements.requests y el montón de JVM en spec.clusters[].jvmFlags.

Disk

Uso superior al 90%

Reduzca el tamaño del índice para que el uso esté por debajo del umbral. mongot se vuelve de solo lectura en este umbral.