2012-02-08 17 views
2

1つのBeefierマシンで100個のシャードを使用してmongodbシャーディングを実装するだけで、データベースへのより高い並行処理を実現するのは理にかなっているのですが、monogod.exeプロセスごとにグローバルロックがありますか?それが可能であると仮定すると、それは私により高い書き込み同時性を与えるでしょうか?MongoDB 1台のマシンでシャーディングする

+0

おそらく100の破片が多すぎますが、太ったサーバーで少数の破片でより良い性能を出せば驚くことはありません。しかし、普通に行われているように、別々の小規模なサーバー上にあなたの断片を置かないのはなぜですか?どのような種類の挿入/更新速度が期待されますか? –

+0

主な理由は、私がやる必要があるPOCの可用性です。私が利用可能なサーバ用のシャード環境をシミュレートできるかどうかは疑問です。私は8コアのサーバと32GBのRAMを仮定しています。私は、1000回の同時書き込みと10,000回の同時読み取りを望んでおり、各読み取りまたは書き込み要求は、データベースによって処理されるのに0.5秒以上かかることはない。これはMongoDBでも合理的ですか?書込みの各読取りおよびデータ量の問合せ結果サイズは大きくなく、これは主に、多数の読取りまたは書込み要求をdbに同時に処理することです。 – iCode

+0

あなたはここでの洞察を感謝します。私は理にかなっていますか? – iCode

答えて

9

マシン上で複数のmongodを実行することはお勧めできません。 mongodプロセスのすべては、利用可能なメモリをすべて使用しようとします。他のmongodのメモリマップされたページをメモリから強制的に削除します。これにより、ほとんどの場合、膨大な量の交換が発生します。示されているよう

は、グローバル・データベース・ロックは、一般的に問題ではありません:だけマシンごとに1つのmongodを使用http://blog.pythonisito.com/2011/12/mongodbs-write-lock.html

(しかし、それは同様にmongosまたは設定サーバーを追加するには大丈夫です)、それはいくつかの簡単なテストのためでない限り、 。私は、同じサーバー上で複数のmongodを実行した

歓声、 Derick

1

のみ使用の場合は、高レイテンシの接続でレプリケーションの速度を増加させることでした。

Derickが強調しているように、mongodbを実行しているときは書き込みロックは問題にはなりません。あなたのテストが劇的にパフォーマンスをdecraseます(そうでない場合はページをあまりにも多くのデータを必要としない場合がはいは、あなたが(十分にあることをサーバーセムスあたり4つのインスタンス)マシンごとにいくつかのインスタンスでのmongoスケーリングを発揮することができます

あなたの質問に答えるために、 、私はすでにそれをテストしました)

しかし、インスタンスはまだはリソースのためにを競うでしょう。データベースロックの問題をリソースロックの問題に移行するだけです。

2

私は全く同意しません。セットアップでは、1箱につき8個のシャードを実行します。 2つのヘッドノードから構成され、それぞれに2つのレプリケーション用のマシンがあります。合計6箱。これらは約120GBのRAM、32個のコア、2TBの容量を持つ堅い箱です。 1箱あたり8つのシャードを持つことで(これは歴史的な目的で8に設定されているように高くなる可能性があります)、CPUを効率的に活用しています。 RAM自体がソートされます。メトリックを監視して、あまりにも多くのページングをしていないことを確認する必要がありますが、SSDドライブ(私たちが持っているディスクドライブ)にディスクドライブをあまりにも悪くしないでください。

+0

RAMはどのようにして消滅しますか?また、書き込みスループットを上げるために非常に多くの断片を持つことに決めましたか? – iCode

+0

Mongo Map Reduce(MR)を使用しており、すべてのデータを処理するにはCPUの能力が必要です。オリジナルのシャーディングは、コアごとにシャードが設定されていました。これにより最大のCPUが得られました。それ以来、このボックスはアップグレードされており、今度は4つのコアごとにシャードになっています。メモリに関しては、それはRAM内のインデックスを保持する練習です。データは決して適合しないので、それについても心配しないでください。 GoogleはインデックスのサイズをRAMと比較して監視し、対応するようにアップグレードしました。私たちは、必要のないインデックスも削除しました。 –

0

はい、これは、実際には50億本以上の重いデータベースの場合と同じことです。 mongodごとのすべてのインデックスがRAMに収まるようにして、成長と保守の余地があることを確認してください。

しかし、ターゲットとなるQPSの種類によっては、このような共有にはより多くの馬力が必要ですが、1台のマシンでシャーディングすることはできません。ほとんどの場合、安価なハードウェア。

パフォーマンステスト(IOIN、ネットワーク、PQSなど)の一連のテストを行い、ベースラインを慎重に確立し、SSDドライブをストレージとして検討すると偏って見えるかもしれませんが、Linux XFSストレージも考慮する必要があります。

関連する問題