2012-03-19 7 views
21

Być może w jakiś sposób źle skonfigurowałem MongoDB, ale nawet przy dużym obciążeniu nie widzę go z użyciem więcej niż jednego rdzenia. Na przykład top pokazuje obecnie:Czy MongoDB w jakiś sposób ogranicza się do pojedynczego rdzenia?

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  

Czy jest coś, co mogę zrobić, aby Mongo mógł efektywniej korzystać z innych rdzeni? Jeśli jest to istotne, mam obecnie duże uruchamianie M/R, które wydaje się mieć wiele zapytań do odczytu w trybie "oczekiwania".

Odpowiedz

28

MongoDB może wysycać wszystkie rdzenie na wielordzeniowym komputerze dla operacji odczytu, ale dla operacji zapisu i redukcji map MongoDB może wykorzystywać tylko jeden rdzeń na proces mongody.

Ograniczenie jednordzeniowego programu MapReduce wynika z interpretatora Javascript używanego przez MongoDB. To jest coś, co powinno zostać naprawione w przyszłości, ale w międzyczasie możesz użyć Hadoop do wykonania MapReduce i zapisać zestaw wyników w bazie danych MongoDB.

Inną opcją, która przyniosła mieszane wyniki, jest uruchomienie pojedynczego procesu mongod dla każdego rdzenia instancji, co nie zwiększy wydajności dla pojedynczej bazy danych, chyba że są skonfigurowane do działania w konfiguracji z sharded.

+0

Czy zmieniło się to w ogóle od marca? – UpTheCreek

+1

Nadal uważam, że tak jest - http://stackoverflow.com/questions/4407336/mongodb-utilizing-multi-cpu-server-for-a-write-heavy-application –

+2

Od 30 maja 2014 (z mongo 2.6.1) Wciąż widzę tylko jeden rdzeń procesora. – arun

Powiązane problemy