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 el modelo de implementación de MongoDB Search, consulte Arquitectura de MongoDB Search.
Para el modelo de implementación de búsqueda vectorial, consulte Arquitectura de búsqueda vectorial de MongoDB.
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.
Dimensionamiento de recursos
Elija una clase de carga de trabajo
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.
Elija un tamaño inicial
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.
Configurar CPU y memoria
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:2requests.memory:4GiNo
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.
Configurar el montón de JVM
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
Dimensionamiento de volúmenes persistentes
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.
Estimar tamaño del índice
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:
Inserte una muestra representativa.
Inserta de 1 a 2 GB de datos, o crea una colección pequeña con $out.
Observe la proporción resultante.
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.
Dimensionar el volumen persistente que se va a implementar
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.
Elija una clase de almacenamiento
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 cuandomongotfusiona segmentos antiguos en otros más grandes.Umbral de solo lectura: Cuando un volumen alcanza el 90% de uso,
mongotentra 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%.
Supervisar el uso de recursos
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 |
Memoria |
| Aumente la memoria en |
Disk | Uso superior al 90% | Reduzca el tamaño del índice para que el uso esté por debajo del umbral. |