Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/
Manual do banco de dados
/ /

Ajuste de desempenho

As implementações do MongoDB podem oferecer suporte a bancos de dados de grande escala com altos volumes de transações, tornando o ajuste de desempenho essencial. O ajuste regular ajuda a identificar problemas no cluster antecipadamente, permitindo resolvê-los antes que impacto a capacidade de resposta ou a estabilidade do sistema.

Este documento aborda alguns métodos comuns para otimizar o desempenho da implantação usando o ajuste de desempenho e métricas úteis. Esses métodos se aplicam tanto a clusters do MongoDB Atlas quanto a sistemas autogerenciados. No entanto, o processo de ajuste é significativamente mais fácil com o MongoDB Atlas, que automatiza muitas tarefas e simplifica a eficiência. Para obter mais informações sobre desempenho, consulte Desempenho do MongoDB .

Para garantir o desempenho ideal da query, você pode usar métricas que revelam problemas de desempenho da query e informam o que fazer se você encontrar queries lentas.

Os arquivos de log do MongoDB registram o tempo de execução e o método para cada query, permitindo que você pesquise queries lentas. O profiler de banco de dados registra queries que excedem um limite especificado.

Se uma query for lenta, primeiro acesse seus planos de query. Para obter mais informações sobre como localizar dados do plano de query, consulte Explicar resultados.

  • Certifique-se de que sua query executou uma verificação de índice, em vez de uma verificação de collection.

    Uma varredura de índice limita o número de documentos que o MongoDB inspeciona, enquanto uma verificação de collection exige que o MongoDB leia todos os documentos em uma collection.

  • Se você vir muitas verificações de collection nos resultados do plano de explicação, considere adicionar um índice.

    Observação

    Os índices podem desacelerar gravações e atualizações, portanto, ter muitos índices subutilizados pode impedir modificações ou inserções de documento , dependendo do seu volume de trabalho.

Você também pode usar as seguintes métricas de query para garantir que sua query esteja sendo executada na velocidade máxima:

Observação

Tenha cuidado ao modificar storageEngineConcurrentReadTransactions e storageEngineConcurrentWriteTransactions, pois alterar essas configurações pode levar a problemas ou erros de desempenho. Recomendamos que você consulte o Suporte do MongoDB antes de alterar esses parâmetros.

O plano de query não contém nenhuma métrica para revelar antipatterns da estrutura do documento , mas você pode procurar antipatterns ao depurar query lentas. Tenha cuidado com as seguintes práticas de query errada mais comuns que prejudicam o desempenho:

  • Arrays não vinculadas: as arrays em um documento que podem crescer sem um limite de tamanho causam problemas de desempenho, pois cada vez que você atualiza a array, o MongoDB deve reescrever a array no documento. Para obter mais informações, consulte Evitar arrays ilimitadas.

  • Documentos incorporados sem limites: o MongoDB suporta a inserção de documentos dentro de documentos, com até 128 níveis de aninhamento. Cada documento do MongoDB , incluindo documentos incorporados, tem um limite de tamanho de 16MB. Um número excessivo de documentos incorporados pode resultar em problemas de desempenho.

    Para mitigar o excesso de documentos incorporados, mova os documentos incorporados para coleções separadas e referencie-os a partir do documento original.

O MongoDB tem milhares de métricas que acompanham todos os aspectos do desempenho do banco de dados , incluindo leitura, gravação e consulta do banco de dados, além de garantir que tarefas de manutenção em segundo plano, como backups, não atrapalhem o desempenho. As métricas a seguir ajudam a indicar problemas com seu banco de dados para que você possa garantir seu desempenho ideal.

O atraso de replicação ocorre quando um membro secundário de um conjunto de réplicas fica atrás do primário. Para entender a causa do atraso de replicação, você pode examinar as métricas relacionadas ao oplog. No entanto, os seguintes problemas são as causas mais comuns de atraso de replicação:

  • Um problema de rede entre o primário e o secundário, tornando os nós inacessíveis

  • Um nó secundário que aplica dados de forma mais lenta do que o nó primário

  • Capacidade de gravação insuficiente, caso em que você deve adicionar mais shards

  • Operações lentas no nó primário, bloqueando a replicação

O sistema de bloqueio interno do MongoDB é usado para suportar queries simultâneas, evitando conflitos de escrita e leituras inconsistentes. Os problemas de desempenho resultantes do bloqueio ocorrem quando o número restante de tíquetes de leitura ou gravação disponíveis chega a zero, o que significa que qualquer nova solicitação de leitura ou gravação será enfileirada até que um novo tíquete de leitura ou gravação esteja disponível.

Problemas de desempenho de bloqueios podem indicar índices abaixo do ideal e padrões de design de esquema ruins, o que pode levar à retenção de bloqueios por mais tempo do que o necessário.

Se o número de cursores abertos estiver aumentando sem um crescimento correspondente do tráfego, isso pode ser o resultado de queries mal indexadas ou de queries de longa duração devido a grandes conjuntos de resultados.

Ao ajustar o desempenho, é importante reconhecer quando o tráfego total ou a taxa de transferência de transações pelo sistema está ultrapassando a capacidade planejada do cluster. Ao acompanhar o crescimento da taxa de transferência, você pode expandir a capacidade do cluster com eficiência.

As métricas a seguir podem ajudá-lo a acompanhar a taxa de transferência do cluster. Para localizar estas métricas, execute o comando serverStatus e examine os campos especificados abaixo.

As métricas de Operações de Leitura e Gravação indicam quanto trabalho o cluster faz. Você pode encontrar operações de leitura por meio do campo opcounters.query e operações de gravação por meio de opcounters.insert, opcounters.update e opcounters.delete, que contam o número total de operações de inserção, atualização e exclusão, respectivamente.

A proporção de leituras para gravações depende da natureza das cargas de trabalho em execução no cluster.

  • O monitoramento das operações de leitura e gravação ao longo do tempo permite estabelecer faixas e limites normais.

  • Como as tendências nas operações de leitura e gravação mostram o crescimento da taxa de transferência, você pode aumentar gradualmente a capacidade.

As métricas do documento e o executor da query indicam se o cluster está muito ocupado. Da mesma forma que a métrica de operações de leitura e escrita, não há um número certo ou errado para essas métricas, mas ter uma boa ideia do que é normal ajuda a discernir se o baixo desempenho é proveniente do tamanho do grande volume de trabalho ou atribuível a outros motivos.

Para recuperar métricas de documentos, acesse os campos metrics.keysExamined e metrics.totalExecMicros. Para recuperar as métricas do Executor da Query, examine o campo metrics.fromPlanCache. Você pode encontrar todos esses campos usando o estágio de agregação $queryStats.

  • O MongoDB atualiza as métricas do documento sempre que você encontra um documento ou insere um documento. Quanto mais documentos você localizar, inserir, atualizar ou excluir, mais ocupado será seu cluster.

    • O baixo desempenho em um cluster que tem muita capacidade geralmente indica problemas de query.

  • O executor de query informa quantas queries estão sendo processadas usando dois pontos de dados:

    • Digitalizado: a taxa média por segundo durante o período de amostra selecionado de itens de índice verificados durante queries e avaliação do plano de queries.

    • Objetos digitalizados: a taxa média por segundo durante o período de amostra selecionado de documentos digitalizados durante queries e avaliação do plano de queries.

As métricas de hardware e rede podem indicar que a taxa de transferência está aumentando e excederá a capacidade da infraestrutura de computação. Essas métricas são coletadas do sistema operacional e da infraestrutura de rede. Para tornar essas métricas úteis para fins de diagnóstico, você deve ter uma noção do que é normal.

  • Se você estiver executando o MongoDB no local, poderá visualizar as métricas de hardware e rede usando o Ops Manager, dependendo do seu sistema operacional.

  • Embora haja muitas métricas para acompanhar, algumas métricas importantes para ter um intervalo de linha de base são:

    • Latência do disco

    • IOPS de Disco

    • Número de conexões

Um cluster MongoDB usa uma variedade de recursos que a infraestrutura de computação e rede subjacente fornece.

A métrica Número atual de conexões de clientes, localizada no campo connections.current no documento serverStatus, pode indicar a carga total em um sistema. Acompanhar as faixas normais em vários horários do dia ou da semana pode ajudá-lo a identificar rapidamente picos de tráfego.

Uma métrica relacionada, a porcentagem de conexões usadas, pode indicar quando o MongoDB está perto de ficar sem conexões disponíveis.

As métricas de armazenamento acompanham como o MongoDB usa o armazenamento persistente. No mecanismo de armazenamento WiredTiger, cada coleção e cada índice são arquivos individuais. Quando você atualiza um documento em uma coleção, o MongoDB reescreve o documento inteiro.

  • Se métricas de espaço de memória, como dbStats.dataSize, dbStats.indexSize, dbStats.storageSize ou o número de documentos no banco de dados mostrarem uma alteração significativa e inesperada enquanto o tráfego do banco de dados permanece dentro das faixas comuns, isso pode indicar problemas como exclusão ou corrupção de dados, crescimento inesperado de dados ou alterações de índice.

  • Uma queda súbita no dbStats.dataSize pode indicar uma grande quantidade de exclusão de dados. Se essa queda for inesperada, você deve investigar rapidamente.

As métricas de memória mostram como o MongoDB usa a memória virtual da infraestrutura de computação que hospeda o cluster. Você pode encontrar métricas de memória no documento mem nos resultados de serverStatus.

  • Um número crescente de falhas de página ou uma quantidade crescente de dados alterados, mas ainda não gravados em disco, podem indicar problemas relacionados à quantidade de memória disponível para o cluster.

  • As métricas de cache podem ajudar a determinar se o conjunto de trabalho está superando o cache disponível.

O MongoDB cria declarações principalmente por meio de erros que o MongoDB captura como parte de seu processo de registro.

O monitoramento do número de asserções criadas em vários níveis de gravidade pode fornecer uma indicação primária de problemas inesperados. As asserções podem ser erros de mensagem (o tipo mais sério) ou asserções de aviso, asserções regulares e asserções de usuário.

Voltar

Ajuste

Nesta página