MongoDB как-то ограничен одним ядром? - PullRequest
24 голосов
/ 19 марта 2012

Возможно, я каким-то образом неправильно сконфигурировал 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, который, похоже, поместил много запросов на чтение в режиме ожидания.

1 Ответ

32 голосов
/ 19 марта 2012

MongoDB может насытить все ядра на многоядерном компьютере для операций чтения, но для операций записи и уменьшения карты MongoDB может использовать только одно ядро ​​на процесс mongod.

Ограничение для одноядерного MapReduce связано с интерпретатором Javascript, который использует MongoDB. Это то, что должно быть исправлено в будущем, но тем временем вы можете использовать Hadoop для выполнения MapReduce и сохранения результирующего набора в вашей базе данных MongoDB.

Другая опция, которая показала смешанные результаты, - это запуск одного процесса mongod для каждого ядра в экземпляре, что не приведет к увеличению производительности для отдельной базы данных, если они не настроены для работы в изолированной установке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...