MongoDB是否以某种方式局限于单个核心?

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.

也许我在某种程度上误解了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.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。