MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Rastreando o uso de memória do MongoDB

Entender o uso de memória do MongoDB é crucial para uma boa experiência de hospedagem do MongoDB. Para obter o melhor desempenho, é imperativo manter seu conjunto de trabalho na memória. Vi algumas sugestões de que, se você usar unidades de estado sólido (SSD), isso tornará a memória menos importante. O tempo de acesso à memória de acesso aleatório dinâmico (DRAM) é da ordem de nanossegundos, o tempo de acesso do SSD é da ordem de microssegundos e o tempo de acesso do disco rígido é da ordem de milissegundos - então os SSDs ainda têm um caminho a percorrer para recuperar o atraso com memória.

O MongoDB usa arquivos de mapeamento de memória (MMF) para mapear o banco de dados na memória. Os dados são enviados periodicamente para o disco (obviamente o mecanismo é muito mais complicado, mas isso é assunto para outro post).

Depois que seu servidor MongoDB estiver funcionando, é importante monitorar e entender o uso de memória. Para monitorar nossos servidores MongoDB, você pode usar o ScaleGrid MongoDB Monitoring Console para ver métricas detalhadas sobre seu desempenho. Execute algumas cargas de trabalho de exemplo e estabeleça uma linha de base para que você possa entender quando algo não está funcionando normalmente. Aqui estão quatro contadores importantes que ajudarão você a monitorar o uso de memória do MongoDB:

  1. Memória


    Na verdade, são três contadores em um gráfico:

    1. Memória residente

      Esta é a quantidade real de memória física que está sendo usada pelo processo MongoDB.

    2. Memória mapeada

      Esta é a quantidade de memória virtual usada pelo progresso do MongoDB para mapear seu banco de dados na memória. Isso normalmente será o tamanho do seu banco de dados.

    3. Memória Virtual

      Isso inclui a memória virtual para todo o processo do MongoDB. Se você tiver o registro no diário ativado, isso normalmente terá o dobro do tamanho da memória mapeada.

  2. Memória virtual não mapeada


    Esta é a quantidade de memória virtual usada para dados de contabilidade e não para mapear os arquivos de dados. Por exemplo, cada conexão consome uma certa quantidade de memória. Normalmente, esse contador deve ser bastante baixo – geralmente menos de 1 GB.

  3. Falhas de página

    Este é o número de falhas de página/segundo. Obviamente, você deseja que esse número seja o mais baixo possível.

    • Falha de página difícil


      Isso é acionado quando a página em questão não está na memória física e precisa ser buscada no disco.
    • Falha de página suave


      Isso ocorre quando a página reside em outro lugar na memória ou está em um estado de transição.
  4. Árvore B (Índice Miss)


    Uma falta de índice é duas vezes mais ineficiente, pois causa duas leituras de disco, uma para ler a entrada do índice e outra para ler o documento. O contador de árvore B rastreia o número de erros de índice. Este é outro lugar em que você deseja estabelecer uma linha de base para identificar padrões incomuns. Use o comando .explain() para verificar os planos de consulta para suas consultas comuns.

Outro aspecto importante do gerenciamento de memória no MongoDB é entender seu 'conjunto de trabalho'. Em nossa próxima postagem, examinaremos como determinar o conjunto de trabalho para seu banco de dados.