MongoDB是否以某种方式局限于单个核心?
也许我在某种程度上误解了MongoDB,但即使在重载情况下,我也看不到它使用多个内核。例如,top当前显示:MongoDB是否以某种方式局限于单个核心?,mongodb,Mongodb,也许我在某种程度上误解了MongoDB,但即使在重载情况下,我也看不到它使用多个内核。例如,top当前显示: 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.
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
我能做些什么让Mongo更有效地使用其他内核?如果相关的话,我目前正在运行一个大的M/R,它似乎将许多读取查询置于“等待”模式。MongoDB可以使多核机器上的所有内核饱和,以进行读取操作,但对于写入操作和map reduce,MongoDB只能在每个mongod进程中使用一个内核 单核MapReduce的局限性在于MongoDB使用的Javascript解释器。这应该在将来修复,但在此期间,您可以使用Hadoop执行MapReduce并将结果集存储在MongoDB数据库中
另一个结果好坏参半的选项是为实例上的每个核心运行一个mongod进程,这不会提高单个数据库的性能,除非它们配置为在分片设置中运行。我仍然认为是这样的-截至2014年5月30日(使用Mongo2.6.1)我仍然只看到一个CPU核心被使用。现在呢?有什么改进或者答案已经过时了吗?这是否也适用于新的MongoDB内存存储引擎?还是单核。只是更新/澄清一下。我最初的问题是关于Map/Reduce的,但是您可以使用,而这会更有效地使用CPU。