Importante
Característica no disponible en los clústeres Flex
Los clústeres flexibles no admiten esta función actualmente. Para obtener más información, consulte Limitaciones de Atlas Flex.
Elegir el nivel de clúster de Atlas y la configuración correctos es un paso importante para realizar una implementación exitosa de producción de MongoDB. Siempre puedes modificar un clúster más adelante, pero es posible comenzar con la configuración correcta con unos pocos cálculos basados en el tamaño de su conjunto de datos y los requisitos de la red.
También puede configurar su clúster para escalar automáticamente su nivel, capacidad de almacenamiento o ambos según el uso del clúster, lo que reduce el mantenimiento manual necesario. Para obtener más información, consulte Clúster escalado automático.
Nota
Recomiende clústeres M30 o mayores para uso en producción
M30 Se recomiendan clústeres de mayor capacidad para entornos de producción. Puede usar clústeres M10 y M20 como entornos de producción para aplicaciones con poco tráfico. Los clústeres con cargas sostenidas en los niveles M10 y M20 pueden experimentar una disminución del rendimiento con el tiempo.
Escalado automático de clúster
Los clústeres dedicados admiten el escalado automático de clústeres. El escalado automático por nivel de clúster está activado por defecto cuando se crean nuevos clústeres en la interfaz de usuario. Está deshabilitado por defecto si se crean nuevos clústeres en la API. Con el escalado automático activado, Atlas escala automáticamente el nivel de clúster, capacidad de almacenamiento o ambos en respuesta al uso del clúster. El escalado automático permite que el clúster se adapte a la carga de trabajo actual y reduzca la necesidad de realizar optimizaciones manuales.
El escalado del almacenamiento del clúster aumenta automáticamente la capacidad de almacenamiento del clúster cuando 90se utiliza el % de la capacidad del disco. Esta configuración está habilitada de forma predeterminada para garantizar que el clúster siempre pueda soportar entradas repentinas de datos. Para desactivar el escalado del almacenamiento del clúster, desmarque la casilla Storage Scaling casilla de verificación en la sección Auto-scale.
El escalado de nivel de clúster escala automáticamente el nivel de tu clúster hacia arriba o hacia abajo en respuesta a diversas métricas del clúster. Para desactivar el escalado automático de clúster, desmarca la casilla Cluster Tier Scaling en la sección Auto-scale.
Para controlar cómo Atlas debe realizar el escalado automático de tu clúster, configura:
El nivel máximo de clúster al que tu clúster puede escalar automáticamente. Por defecto, esta opción está configurada en el siguiente nivel de clúster en comparación con el nivel actual.
El nivel mínimo de clúster al que su clúster puede escalar hacia abajo. Por defecto, esta configuración está establecida en el nivel de clúster actual.
Memoria
La memoria se refiere a la RAM física total disponible en cada nodo de datos del clúster Atlas. Por ejemplo, un set de réplicas estándar M30 está configurado con 8 GB de RAM en cada uno de los 3 nodos de datos.
Atlas utiliza el motor de almacenamiento WiredTiger.
Por defecto, para clústeres de M40 o más grandes, WiredTiger dedica un 50% o más de la RAM física a la caché de WiredTiger. La memoria restante está reservada para los siguientes usos:
Operaciones en memoria, como ordenaciones y cálculos.
Sistema operativo subyacente y otros servicios del sistema
Por defecto, para clústeres M30 o más pequeños, WiredTiger dedica el 25% de la RAM física a la caché de WiredTiger.
Para aprender más sobre el uso de la memoria, consulte WiredTiger y el uso de la memoria.
MongoDB utiliza la caché de WiredTiger para mantener los datos y los índices que se usaron recientemente. El conjunto de trabajo es la suma de todos los índices más el conjunto de documentos a los que a menudo se accede. Si su conjunto de trabajo cabe en la RAM, entonces MongoDB puede servir queries desde la memoria, lo que proporciona los tiempos de respuesta de query más rápidos.
Para estimar el tamaño del conjunto de trabajo, se puede realizar un cálculo utilizando la información obtenida de db.stats() para el espacio total del índice y suponer que a menudo se accederá a un porcentaje del espacio de datos, o se pueden estimar los requisitos de memoria en función de las suposiciones fundamentadas.
Ejemplo: los conjuntos de datos de muestra de Atlas
Utilizando los conjuntos de datos de muestra de Atlas, calcularemos los requisitos de memoria para ejecutar todas estas bases de datos en un único clúster de Atlas. El siguiente programa de JavaScript devuelve información de la base de datos para el clúster:
var totalIndexSize = 0; var totalDataSize = 0; var reservedDBs = ["admin","config","local"]; // Switch to admin database and get list of databases. db = db.getSiblingDB("admin"); dbs = db.runCommand({ "listDatabases": 1 }).databases; // Iterate through each database and get its stats. dbs.forEach(function(database) { if (reservedDBs.includes(database.name)) return; db = db.getSiblingDB(database.name); print("Obtaining stats for " + database.name); var stats = db.stats(); totalIndexSize += (stats.indexSize / (1024*1024*1024)) ; totalDataSize += (stats.dataSize / (1024*1024*1024)) ; }); print ("Total data size in GB: " + totalDataSize.toFixed(2)); print ("Total index size in GB: " + totalIndexSize.toFixed(2));
Este programa devuelve los siguientes resultados:
Obtaining stats for sample_airbnb Obtaining stats for sample_geospatial Obtaining stats for sample_mflix Obtaining stats for sample_supplies Obtaining stats for sample_training Obtaining stats for sample_weatherdata Total data size in GB: 0.32 Total index size in GB: 0.02
Para ejecutar estas bases de datos completamente en memoria, necesitaría un mínimo de 0,68 GB de RAM física, ya que WiredTiger utiliza el 50% de la RAM física y necesitamos al menos 0,34 GB para que el conjunto de trabajo quepa en memoria.
Un clúster de producción realista tendría un tamaño de datos e índices mucho mayor, y puede que ejecutar el conjunto de datos completo y los índices en memoria no sea práctico, ni un requisito de negocio o rendimiento. Veamos otro escenario.
Ejemplo: aplicación móvil
Un popular juego móvil tiene 512 GB de datos y 32 GB de índices. Los datos del sistema interno del juego ocupan 16 GB, y el resto son datos del perfil del jugador. El perfil de un jugador debe estar en memoria mientras el jugador esté activo en el juego. Aproximadamente el 25% de todos los jugadores están activos en cualquier punto del tiempo. Los datos del sistema se utilizan de forma constante y deben caber completamente en la RAM para un rendimiento óptimo. Todos los índices también deben caber en la RAM para lograr el tiempo de respuesta de consultas más rápido. El dimensionamiento de la memoria es el siguiente:
Datos | Requisitos de memoria RAM | RAM para la caché de WiredTiger |
|---|---|---|
Sistema: 16 GB | 100 % en RAM | 16 GB |
Index: 32 GB | 100 % en RAM | 32 GB |
Perfiles de jugadores: 496 GB | 25% en la RAM | 124 GB |
Dados estos requisitos, podrías esperar que un conjunto de trabajo promedio requiera 172 GB de RAM.
WiredTiger asigna el 50% de la RAM física a la caché de WiredTiger, por lo que la RAM física total mínima necesaria para alojar el conjunto de trabajo es el doble del conjunto de trabajo.
En este ejemplo, se necesita al menos 344 GB de RAM física para acomodar la caché de WiredTiger y un conjunto de trabajo de 172 GB. La siguiente tabla enumera los niveles de clúster adecuados de Atlas:
Proveedor de servicios | Posibles niveles de clúster | notas |
|---|---|---|
AWS |
|
|
GCP |
|
|
Azure |
|
|
Nota
Si seleccionas un nivel de clúster sin suficiente RAM, como un Azure M200 con 256 GB de RAM, se deberá realizar un particionado.
Tráfico de red
Todo el tráfico de red entre los nodos del clúster y entre los clientes que consumen datos de su clúster Atlas tiene un impacto en el ancho de banda de la red. Para fines de dimensionamiento del clúster, considere el tráfico máximo que cualquier nodo de su clúster soportará y utilice esto como base para seleccionar un nivel de clúster de Atlas adecuado.
Las tasas de transferencia de datos descendentes desde el clúster a las aplicaciones cliente se pueden calcular como la suma del total de documentos devueltos durante un período de tiempo. Si solo se lee desde el nodo primario, este es el único cálculo que se debe hacer. Si las aplicaciones también leen desde nodos secundarios, se puede dividir este número por la cantidad de nodos que sirvan operaciones de lectura.
Puede encontrar el tamaño promedio de un documento para una base de datos con el método db.stats(). Multiplique el tamaño promedio del documento (avgObjSize) por la cantidad de documentos servidos por segundo para estimar tus requisitos de ancho de banda.
Ejemplo
Tamaño promedio del documento: 10 KB
100.000 documentos por segundo servidos
10 KB * 100,000 = 1 GB por segundo
Las instancias de Atlas ofrecen velocidades de ancho de banda más rápidas en los niveles superiores. Las instancias que están respaldadas por AWS ofrecen hasta 10 gigabits por segundo en el nivel M30, mientras que el nivel M200 ofrece hasta 25 gigabits por segundo.
Conexiones
Un clúster de Atlas puede admitir una determinada cantidad de conexiones de clientes, la cual está determinada por su nivel de clúster. Por ejemplo, los clústeres M30 admiten hasta 3000 conexiones simultáneas y los clústeres M200 admiten hasta 128.000 conexiones simultáneas. Para obtener más información, consulte Límites de conexión y nivel de clúster.