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

MongoDB usando mucha memoria

1) En términos de durabilidad, puede decirle al controlador Java de MongoDB (que usa Morphia), qué estrategia usar, consulte https://github.com/mongodb/mongo-java-driver/blob/master/src/main/com/ mongodb/WriteConcern.java#L53 . Es simplemente una compensación entre la velocidad:NONE (ni siquiera los problemas de conectividad causarán un error) hasta FSYNC_SAFE (los datos definitivamente se escriben en el disco). Para conocer los detalles internos, consulte http://www.kchodorow.com/blog/2012/10/04/how-mongodbs-journaling-works/

2) Todos sus datos se asignan a la memoria (es por eso que la edición de 32 bits tiene un límite de tamaño de 2 GB), sin embargo, solo se cargan cuando es necesario. MongoDB le deja eso al sistema operativo usando mmap. Entonces, mientras haya más RAM disponible, MongoDB felizmente cargará todos los datos que necesita en la RAM para realizar consultas muy rápidamente. Si no hay más memoria disponible, depende del sistema operativo cambiar las cosas viejas. Esto tiene el agradable efecto de que sus datos se mantendrán en la memoria incluso si reinicia el proceso de MongoDB; solo si reinicia el servidor, los datos deben recuperarse del disco nuevamente. Creo que la desventaja es que el proceso de la base de datos puede comprender un poco mejor lo que debe intercambiarse primero en comparación con el sistema operativo. No estoy usando MongoDB en Windows y no he visto ese mensaje en Mac o Linux (todavía ), pero el sistema operativo debe manejar eso por usted (e intercambiar automáticamente información según sea necesario). ¿Ha intentado configurar el controlador en JOURNAL_SAFE? (debería ser un buen compromiso entre la seguridad de los datos y la velocidad)? En esa configuración, no se deben perder datos, incluso si el proceso de MongoDB muere.

3) En general, MongoDB está diseñado para usar la mayor cantidad de memoria disponible posible, pero es posible que pueda restringirla con http://captaincodeman.com/2011/02/27/limit-mongodb-memory-use-windows/ - que no he probado, ya que estamos usando servidores Linux (virtuales).