Esto depende mucho del sistema, pero es casi seguro que escalaremos un acantilado arbitrario y nos meteremos en un problema real. Tengo curiosidad por saber qué tipo de reglas generales existen para una buena relación RAM a espacio en disco. Estamos planeando nuestra próxima ronda de sistemas, y debemos tomar algunas decisiones con respecto a la RAM, las SSD y la cantidad de cada uno de los nuevos nodos.
Pero ahora para algunos detalles de rendimiento!
Durante el flujo de trabajo normal de un solo proyecto ejecutado, MongoDB recibe un porcentaje muy alto de escrituras (70-80%). Una vez que llega la segunda etapa de la tubería de procesamiento, es de lectura extremadamente alta, ya que necesita deduplicar los registros identificados en la primera mitad del procesamiento. Este es el flujo de trabajo para el que está hecho "mantener su conjunto de trabajo en RAM", y estamos diseñando alrededor de esa suposición.
Todo el conjunto de datos se golpea continuamente con consultas aleatorias de fuentes derivadas del usuario final; Aunque la frecuencia es irregular, el tamaño suele ser bastante pequeño (grupos de 10 documentos). Dado que esto está orientado al usuario, las respuestas deben estar por debajo del umbral "aburrido ahora" de 3 segundos. Es mucho menos probable que este patrón de acceso esté en la memoria caché, por lo que es muy probable que se produzcan golpes de disco.
Un flujo de trabajo de procesamiento secundario es de alta lectura de ejecuciones de procesamiento anteriores que pueden tener días, semanas o incluso meses, y se ejecuta con poca frecuencia, pero aún debe ser rápido. Se accederá hasta el 100% de los documentos en la ejecución de procesamiento anterior. Sospecho que ninguna cantidad de calentamiento de caché puede ayudar con esto.
Tamaños de documentos acabados varían ampliamente, pero la mediana de tamaño es aproximadamente 8K.
La porción de alta lectura del procesamiento normal del proyecto sugiere fuertemente el uso de réplicas para ayudar a distribuir el tráfico de lectura. He leído en otra parte que un 1:10 RAM-GB a HD-GB es una buena regla general para discos lentos. Como estamos considerando seriamente el uso de SSD mucho más rápidos, me gustaría saber si hay una regla similar de pulgar para discos rápidos.
Sé que estamos usando Mongo de una manera en la que todo el caché realmente no va a volar, por eso estoy buscando formas de diseñar un sistema que pueda sobrevivir a ese uso. El conjunto de datos completo probablemente será la mayor parte de una tuberculosis dentro de medio año y seguirá creciendo.