2012-03-19 13 views
21

Tal vez he configurado incorrectamente MongoDB de alguna manera, pero incluso bajo una gran carga no lo veo usando más de un núcleo. Por ejemplo, la parte superior se muestra actualmente:¿Está MongoDB de alguna manera limitado a un solo núcleo?

Tasks: 145 total, 1 running, 144 sleeping, 0 stopped, 0 zombie 
Cpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 
Cpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 
Cpu3 :100.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 
Mem: 41182768k total, 40987476k used, 195292k free, 109956k buffers 
Swap: 2097144k total, 1740288k used, 356856k free, 28437928k cached 

    PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND                   
16297 mongod 15 0 521g 18g 18g S 99.8 47.2 2929:32 mongod                   
    1 root  15 0 10372 256 224 S 0.0 0.0 0:03.39 init  

¿Hay algo que pueda hacer para conseguir Mongo utilizar los otros núcleos con mayor eficacia? Si es relevante, actualmente tengo un gran M/R en ejecución que parece haber puesto muchas consultas de lectura en modo "espera".

Respuesta

28

MongoDB puede saturar todos los núcleos en una máquina multi-core para operaciones de lectura, pero para operaciones de escritura y map-reduce MongoDB solo puede utilizar un solo núcleo por proceso mongod.

La limitación de un solo núcleo MapReduce se debe al intérprete de Javascript que utiliza MongoDB. Esto es algo que se supone que se solucionará en el futuro, pero mientras tanto puede usar Hadoop para ejecutar MapReduce y almacenar el conjunto de resultados en su base de datos MongoDB.

Otra opción que ha tenido resultados mixtos es ejecutar un único proceso mongod para cada núcleo en la instancia, esto no aumentará el rendimiento de una única base de datos a menos que estén configurados para ejecutarse en una configuración fragmentada.

+0

¿Ha cambiado esto desde el pasado mes de marzo? – UpTheCreek

+1

Todavía creo que es el caso - http://stackoverflow.com/questions/4407336/mongodb-utilizing-multi-cpu-server-for-a-write-heavy-application –

+2

A partir del 30 de mayo de 2014 (con mongo 2.6.1) Todavía veo que solo se está utilizando un núcleo de CPU. – arun

Cuestiones relacionadas