Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Planejamento e dimensionamento de recursos de pesquisa e pesquisa vetorial

Esta página descreve como dimensionar os pods mongot que servem o MongoDB Search e a pesquisa vetorial em seu cluster Kubernetes. Use-o para escolher os valores iniciais para spec.clusters[].resourceRequirements, spec.clusters[].jvmFlags e spec.clusters[].persistence no recurso MongoDBSearch e para planejar a capacidade de volume persistente para o crescimento do índice.

Antes de dimensionar o mongot, revise o modelo de implantação e a topologia que você planeja executar:

Para o esquema completo de cada configuração referenciada nesta página, consulte Configurações de pesquisa do MongoDB e pesquisa vetorial.

A proporção de CPU para memória que você aloca depende do seu perfil de carga de trabalho de pesquisa.

Classe de carga de trabalho
Proporção de RAM para CPU
Use quando

CPU alta

2:1

Você executa uma pesquisa de texto completo de uso geral em que o desempenho da query exige muito da CPU.

CPU baixa

8:1

Você executa cargas de trabalho de pesquisa vetorial em volumes de dados mais baixos, onde a memória é mais importante do que a CPU bruta.

Para a maioria dos casos de uso gerais, uma configuração de CPU alta pequena ou média é um ponto de partida equilibrado.

Dimensionar seus pods mongot por volume de dados vetoriais esperado (CPU baixa) ou por queries por segundo (CPU alta).

Tamanho
Baixa CPU (pesquisa vetorial)
Alto CPU (texto completo)

Pequena

Até 10 GB de vetores

20 a 40 QPS, indexação leve

Médio

10 GB a 50 GB de vetores

80 para 160 QPS

grande

50 GB de vetores ou mais

320 a 480 QPS, indexação pesada

Por exemplo, se você espera lidar com 100 query por segundo para um aplicativo de pesquisa de texto completo, comece com uma configuração de CPU média-alta.

Defina a CPU e a memória para pods mongot em spec.clusters[].resourceRequirements. O campo requests reserva capacidade no nó; o campo limits limita o quanto o pod pode consumir.

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

Se você omitir spec.clusters[].resourceRequirements, o Kubernetes Operator usará os seguintes padrões:

  • requests.cpu: 2

  • requests.memory: 4Gi

  • Não limits — o pod pode consumir todos os recursos disponíveis do nó.

Defina limits para corresponder à sua carga de trabalho. Um pod sem limites pode saturar o nó e afetar outras cargas de trabalho.

Quando você não especifica -Xms ou -Xmx em spec.clusters[].jvmFlags, o operador Kubernetes calcula automaticamente o heap da JVM definindo ambos os sinalizadores para metade de spec.clusters[].resourceRequirements.requests.memory.

Para substituir o heap explicitamente, defina -Xms e -Xmx em spec.clusters[].jvmFlags. O operador Kubernetes não modifica nenhum sinalizador fornecido e os anexa após os sinalizadores computados pelo operador.

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

Cada pod mongot tem seu próprio volume persistente que contém os índices de pesquisa e vetor. Planeje o volume para conter o índice mais o espaço para reconstruções.

O tamanho de uma coleção e o tamanho do índice de pesquisa resultante nem sempre são correlacionados. O tamanho do índice depende dos campos que você mapeia e dos recursos (como preenchimento automático) que você habilita no índice. Para estimar o tamanho do índice para sua carga de trabalho:

1

Insira 1 a 2 GB de dados ou crie uma pequena coleção com $out.

2

Crie o índice de pesquisa com os mapeamentos de campo que você planeja usar na produção.

3

Compare o tamanho do índice com o tamanho da coleção. Extrapole a partir dessa proporção para estimar o tamanho do índice em escala de produção. Por exemplo, uma coleção de 1 GB que produz um índice de 250 MB (uma proporção de 0.25:1) implica que uma coleção de 12 GB produz aproximadamente um índice de 3 GB.

Aloque double o espaço em disco que seu índice exige. O espaço adicionais permite que mongot reconstrua índice quando necessário. mongot se torna somente leitura quando o uso do disco atinge 90%.

Defina o tamanho do volume em spec.clusters[].persistence.single.storage usando sufixos de quantidade binária:

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

Se você omitir spec.clusters[].persistence, o operador Kubernetes provisionará um volume padrão de 16 GB. Para um índice de 30 GB, defina spec.clusters[].persistence.single.storage como 60Gi para deixar espaço para reconstruções de índice.

Referencie o StorageClass para o volume em spec.clusters[].persistence.single.storageClass. Escolha uma classe que atenda à seguinte orientação:

  • Tipo de disco: use armazenamento com suporte a SSD de uso geral. Tanto o IOPS de leitura quanto o de gravação são importantes para o desempenho do mongot. A replicação envolve gravações em disco para novos segmentos de índice e leituras em disco quando mongot mescla segmentos antigos em segmentos maiores.

  • Limite somente leitura: quando um volume atinge 90% de uso, mongot entra no modo somente leitura e interrompe as operações de gravação. Para retomar as gravações, exclua os dados do índice para reduzir o uso para menos de 85%.

Após a implantação, monitore os seguintes limites para confirmar se seu dimensionamento inicial é adequado e para saber quando dimensionar.

Resource
limite
em ação

CPU

Uso sustentado acima de 80%

Aumente a CPU em spec.clusters[].resourceRequirements.requests e limits.

Memória

mongot_system_process_majorPageFaults_operations sustentado acima de 1000 por segundo

Aumente a memória em spec.clusters[].resourceRequirements.requests e o heap da JVM em spec.clusters[].jvmFlags.

Disk

Uso acima de 90%

Reduza o tamanho do índice para que o uso fique abaixo do limite. mongot se torna somente leitura neste limite.