Hemos estado usando MongoDB durante varias semanas, la tendencia general que hemos visto es que mongodb está usando demasiada memoria (mucho más que el tamaño total de su conjunto de datos + índices).
Ya leí esta pregunta y esta pregunta , pero ninguna parece abordar el problema que he enfrentado, en realidad están explicando lo que ya se explicó en la documentación.
Los siguientes son los resultados de los comandos htop y show dbs .
Sé que mongodb usa IO mapeado en memoria, por lo que básicamente el sistema operativo maneja el almacenamiento en caché de las cosas en la memoria, y teóricamente, mongodb debería abandonar su memoria en caché cuando otro proceso solicita memoria libre , pero por lo que hemos visto, no lo hace.
OOM comienza a matar otros procesos importantes, por ejemplo, postgres, redis, etc. (Como se puede ver, para superar este problema, hemos aumentado la RAM a 183 GB, que ahora funciona pero es bastante costoso. Mongo está usando ~ 87 GB de ram, casi 4 veces el tamaño de todo su conjunto de datos)
Asi que,
- ¿Es este uso de memoria realmente esperado y normal? (Según la documentación, WiredTiger utiliza como máximo ~ 60% de RAM para su caché, pero teniendo en cuenta el tamaño del conjunto de datos, ¿tiene incluso suficientes datos para poder tomar 86 GB de RAM?)
- Incluso si se espera el uso de la memoria, ¿por qué Mongo no soltará su memoria asignada en caso de que otro proceso comience a solicitar más memoria? Linux oom estaba matando constantemente otros procesos en ejecución, incluido mongodb, antes de aumentar la RAM y hacer que el sistema fuera totalmente inestable.
Gracias !