sql >> Base de Datos >  >> NoSQL >> MongoDB

Seguimiento del uso de memoria de MongoDB

Comprender el uso de la memoria de MongoDB es crucial para una buena experiencia de alojamiento de MongoDB. Para obtener el mejor rendimiento, es imperativo mantener su conjunto de trabajo en la memoria. He visto algunas sugerencias de que si usa unidades de estado sólido (SSD), hace que la memoria sea menos importante. El tiempo de acceso a la memoria dinámica de acceso aleatorio (DRAM) es del orden de nanosegundos, el tiempo de acceso a SSD es del orden de microsegundos y el tiempo de acceso al disco duro es del orden de milisegundos, por lo que los SSD aún tienen mucho camino por recorrer para ponerse al día con memoria.

MongoDB utiliza archivos mapeados en memoria (MMF) para mapear la base de datos en la memoria. Los datos se descargan periódicamente en el disco (obviamente, el mecanismo es mucho más complicado, pero ese es un tema para otra publicación).

Una vez que su servidor MongoDB esté en funcionamiento, es importante monitorear y comprender el uso de la memoria. Para monitorear nuestros servidores MongoDB, puede usar la consola de monitoreo ScaleGrid MongoDB para ver métricas detalladas sobre su rendimiento. Ejecute algunas cargas de trabajo de muestra y establezca una línea de base para que pueda comprender cuándo algo no funciona con normalidad. Aquí hay cuatro contadores importantes que lo ayudarán a controlar el uso de la memoria de MongoDB:

  1. Memoria

    Estos son en realidad tres contadores en un gráfico:

    1. Memoria residente

      Esta es la cantidad real de memoria física utilizada por el proceso MongoDB.

    2. Memoria asignada

      Esta es la cantidad de memoria virtual utilizada por el progreso de MongoDB para mapear su base de datos en la memoria. Normalmente será el tamaño de su base de datos.

    3. Memoria virtual

      Esto incluye la memoria virtual para todo el proceso de MongoDB. Si tiene activado el registro en diario, normalmente será el doble del tamaño de su memoria asignada.

  2. Memoria virtual no asignada

    Esta es la cantidad de memoria virtual utilizada para la contabilidad de datos y no para mapear los archivos de datos. Por ejemplo, cada conexión consume una determinada cantidad de memoria. Por lo general, este contador debe ser bastante bajo, generalmente menos de 1 GB.

  3. Fallas de página

    Este es el número de fallas de página duras por segundo. Obviamente, desea que este número sea lo más bajo posible.

    • Error de página fuerte

      Esto se activa cuando la página en cuestión no está en la memoria física y debe recuperarse del disco.

    • Error de página suave

      Esto ocurre cuando la página reside en otro lugar de la memoria o se encuentra en un estado de transición.

  4. Árbol B (Index Miss)

    Un error de índice es el doble de ineficiente, ya que provoca dos lecturas de disco, una para leer la entrada de índice y otra para leer el documento. El contador de árbol B rastrea el número de errores de índice. Este es otro lugar en el que querrá establecer una línea de base para detectar cualquier patrón inusual. Use el comando .explain() para verificar los planes de consulta para sus consultas comunes.

Otro aspecto importante de la gestión de memoria en MongoDB es comprender su 'Conjunto de trabajo'. En nuestra próxima publicación, examinaremos cómo determinar el conjunto de trabajo para su base de datos.