2012-02-04 33 views
5

Estoy trabajando con MongoDB en un CentOS VPS de 32 bits con 1 GB de memoria interna. Funciona bien la mayor parte del tiempo, pero de vez en cuando los picos de uso de memoria se cuelgan en mi servidor.MongoDB está usando demasiada memoria

¿Hay alguna manera de evitar esto, por ejemplo, limitando la memoria y la CPU que utiliza MongoDB daemon?

Estaba pensando en ejecutar el demonio Mongo con ionice y darle una prioridad baja, pero no estoy seguro de si eso funcionaría.

¡Cualquier ayuda o sugerencias son bienvenidas!

+0

Guau, interesante. Probablemente deberías publicar esto en la lista de correo de mongoDB –

Respuesta

4

Actualmente no es posible limitar la cantidad de memoria. MongoDB usa el mecanismo memory-mapped file para acceder a los archivos de datos. Por lo tanto, la cantidad de memoria utilizada se rige por el sistema. Cuantos más datos toque, más RAM necesitará.

+1

Como consecuencia del uso de archivos mapeados en memoria, [MongoDB en sistemas de 32 bits estará limitado a aproximadamente 2 gigabytes de datos] (http://blog.mongodb.org/post/137788967/32 bits de limitaciones). Es posible que desee considerar el uso de una máquina de 64 bits para su base de datos. – dcrosta

+0

@dcrosta: cierto, se olvidó de mencionar eso. –

+0

SergioTulentsev, dcrosta, gracias por los consejos! es un entorno de prueba con presupuesto limitado pero la producción será en un sistema de 64 bits mucho más pesado que este, así que supongo que el problema se resolverá una vez que transfiera el proyecto (siempre que agregue más hardware cuando sea necesario) –

2

Supongo que también está ejecutando todo lo demás en el mismo servidor?

Realmente, la mejor manera de ejecutar mongo es ponerlo en su propio servidor, donde cosas como apache, mysql, etc. no saltan e interfieren con la RAM que quiere usar. Tuve el mismo problema: el servidor se intercambiaba y se ahogó de vez en cuando, con un uso intensivo.

Probablemente sería mejor con dos servidores de 512MB que es, con suerte, comparable en precio (un mongo corriendo, y uno corriendo el resto). También pensé en tratar de ejecutar una máquina virtual con mongo dentro del VPS, pero eso me cayó en la categoría de "demasiado esfuerzo".

Y sí, como dice dcrosta, utilizar 64 bits, a menos que desee limitar el tamaño de los datos a bajo 2GB (y por qué querrías hacer eso?)

+0

Hola Wes, gracias por eso . El servidor es para el desarrollo, por lo que no hay presupuesto para configuraciones complicadas desafortunadamente, pero el entorno de producción será mucho más pesado, por lo que, hasta donde sé, los problemas deberían resolverse una vez en un sistema de 64 bits. –

1

tuve problemas similares, cuando estaba usando mucho mapa/reducir donde la memoria se filtra y los bloqueos eran a menudo. Ya no uso map/reduce y no ha habido filtraciones/bloqueos de memoria desde hace muchos meses.

Cuestiones relacionadas