2012-03-29 4 views
2

ここで大きな助けを必要とするのは、これが本番環境に影響を与えているからです。メモリが少なくてMongoDbのレプリカサーバーが強制終了しますか?

レプリカ・サーバの一つは、メモリ不足のため失敗し

(kern.logからピースのチャンク下記参照)

kernel: [80110.848341] Out of memory: kill process 4643 (mongod) score 214181 or a child 
kernel: [80110.848349] Killed process 4643 (mongod) 

UPDATE

kernel: mongod invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0 
kernel: [85544.157191] mongod cpuset=/ mems_allowed=0 
kernel: [85544.157195] Pid: 7545, comm: mongod Not tainted 2.6.32-318-ec2 

洞察:

  1. プライマリサーバのDBサイズ50GBのうち30GBがインデックスで埋められています。
  2. プライマリサーバーには7GBのRAMがあり、セカンダリサーバーには3.1GBのRAMがあります。
  3. どちらのサーバも64ビットマシンで、Debian/Ubuntuを実行しています。両方のサーバー

ノートにモンゴ2.0.2を実行

  • : - まだそれに応答なし 私は最近のJira-Mongoのウェブサイトで同様のissue has been createdを参照してください。

  • 答えて

    5

    これらのインスタンスでスワップを有効にしましたか? mongoDBの操作には一般的には必要ありませんが、OOMの状況になるとカーネルによってプロセスが強制終了されるのを防ぐことができます。それがここで言及されています

    http://www.mongodb.org/display/DOCS/Production+Notes#ProductionNotes-Swap

    完全な再同期ではなく、継続的な生産複製中に起こっている参照の問題は - あなたも何をやっているのですか?

    安定した状態になったら、mongostatまたはMMSのResメモリを見てください.3GBを超えるか、それに近い場合は、セカンダリのアップグレードを検討する必要があります。

    +0

    はい、この問題は再同期中に起こっています - このサーバーをインストールしてレプリカメンバーとして追加しました。Mongoはセカンダリサーバー(?)で再同期すると思います –

    +0

    セカンダリにスワップパーティションがありますか?すべての可能性は、同期とその後のインデックスのビルドがRAMをあまりにも多く消費しているので、それは殺されている - スワップはそれを停止する必要がありますが、ゆっくりと実行することを意味します –

    +0

    あなたの提案として私は、それが助けになるかどうか見てみましょう。 –

    0

    私は同様の問題がありました。あなたが持っているオープンなコネクション数は、チェックするべき事項の1つです。 lsofコマンドを実行して、mongodプロセスに関連付けられている開いているファイルを確認します。ジャーナリングを無効にして、開いているファイルの数が少ないかどうか確認してください。その場合は、レプリカに追いつき、ジャーナリングを再度有効にします。それが助けになるかもしれない。スワップを追加することで、RAMを一時的に増やすこともできます。

    +0

    ジャーナリングを削除して再度有効にするのは恐れ、スワップメモリ​​を追加すると助けになりました。 –

    関連する問題