2012-03-19 2 views
21

おそらく私はMongoDBを何らかの形で誤って構成しましたが、重い負荷の下でも、複数のコアを使用しても表示されません。例えば、トップには、現在表示されていますMongoDBは何とか1つのコアに限定されていますか?

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実行があります。

答えて

28

MongoDBはマルチコアマシン上で読み取り操作を行いますが、書き込み操作とマップリダクションのためにMongoDBはmongodプロセスごとに1つのコアしか利用できません。

シングルコアMapReduceの制限は、MongoDBが利用するJavascriptインタプリタによるものです。これは将来修正されるはずのものですが、その間にHadoopを使用してMapReduceを実行し、結果セットをMongoDBデータベースに格納することができます。

混在した結果を見たもう一つの選択肢は、インスタンス上のすべてのコアに対して単一のmongodプロセスを実行することです。シャード設定で実行するように構成されていない限り、単一データベースのパフォーマンスは向上しません。

+0

昨年3月以降、これはまったく変更されましたか? – UpTheCreek

+1

私はまだそれが事実だと思う - http://stackoverflow.com/questions/4407336/mongodb-utilizing-multi-cpu-server-for-a-write-heavy-application –

+2

2014年5月30日現在(mongo 2.6.1)まだ私は使用されているCPUコアが1つしかないことがわかります。 – arun

関連する問題