2012-03-19 15 views
21

Forse non ho configurato correttamente MongoDB in qualche modo, ma anche sotto carico non lo vedo usando più di un core. Ad esempio, in alto è attualmente in mostra:MongoDB è in qualche modo limitato a un singolo core?

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  

C'è qualcosa che posso fare per ottenere Mongo utilizzare gli altri nuclei in modo più efficace? Se è rilevante, al momento ho un grosso M/R in esecuzione che sembra aver messo un sacco di query di lettura in modalità "attesa".

risposta

28

MongoDB può saturare tutti i core su una macchina multi-core per operazioni di lettura, ma per operazioni di scrittura e riduzione della mappa MongoDB può utilizzare solo un singolo core per processo mongod.

La limitazione per MapReduce single-core è dovuta all'interprete Javascript che MongoDB utilizza. Questo è qualcosa che dovrebbe essere risolto in futuro, ma nel frattempo è possibile utilizzare Hadoop per eseguire MapReduce e memorizzare il set di risultati nel database MongoDB.

Un'altra opzione che ha visto risultati misti è l'esecuzione di un singolo processo mongod per ogni core dell'istanza che non aumenterà le prestazioni per un singolo database a meno che non siano configurati per l'esecuzione in un'impostazione di dimensioni ridotte.

+0

È cambiato tutto dallo scorso marzo? – UpTheCreek

+1

Continuo a pensare che sia il caso - http://stackoverflow.com/questions/4407336/mongodb-utilizing-multi-cpu-server-for-a-write-heavy-application –

+2

A partire dal 30 maggio 2014 (con mongo 2.6.1) Vedo ancora un solo core della CPU in uso. – arun

Problemi correlati