1

大規模な MongoDB テーブルを構築するために、PyMongo スクリプトを作成しました。ほぼ完成したとき、突然ハングします。それをセットアップした人は、2GB のメモリを消費しており、限界に達していると言います。

一般的に何が起こっているのかを調べるにはどうすればよいですか? 管理者がスムーズに実行するために調整する必要のあるオプション (メモリ制限、バッファなど) はありますか?

db.current_op() を調べたところ、次のようになりました。

      {'inprog': [{'active': False,
                   'client': '0.0.0.0:0',
                   'desc': 'initandlisten',
                   'lockStats': {'timeAcquiringMicros': {'R': 0,
                                                         'W': 2,
                                                         'r': 6,
                                                         'w': 0},
                                 'timeLockedMicros': {'R': 0, 'W': 100416}},
                   'ns': 'test',
                   'numYields': 0,
                   'op': 'query',
                   'opid': 1,
                   'query': {'options.temp': {'$in': [True, 1]}},
                   'threadId': '0x7fa7c7a71b40',
                   'waitingForLock': False},
                  {'active': False,
                   'desc': 'DataFileSync',
                   'lockStats': {'timeAcquiringMicros': {},
                                 'timeLockedMicros': {}},
                   'ns': '',
                   'numYields': 0,
                   'op': 'none',
                   'opid': 0,
                   'query': {},
                   'threadId': '0x7fa7c4605700',
                   'waitingForLock': False},
                  {'active': False,
                   'desc': 'journal',
                   'lockStats': {'timeAcquiringMicros': {'R': 278218664,
                                                         'W': 20638320},
                                 'timeLockedMicros': {'R': 34804203,
                                                      'W': 313165131}},
                   'ns': '',
                   'numYields': 0,
                   'op': 'none',
                   'opid': 0,
                   'query': {},
                   'threadId': '0x7fa7c3203700',
                   'waitingForLock': False},
                  {'active': False,
                   'client': '0.0.0.0:0',
                   'desc': 'TTLMonitor',
                   'lockStats': {'timeAcquiringMicros': {'r': 2, 'w': 0},
                                 'timeLockedMicros': {'r': 32, 'w': 0}},
                   'ns': 'local.system.indexes',
                   'numYields': 0,
                   'op': 'query',
                   'opid': 22735364,
                   'query': {'expireAfterSeconds': {'$exists': True}},
                   'threadId': '0x7fa7c09ff700',
                   'waitingForLock': False},
                  {'active': False,
                   'desc': 'websvr',
                   'lockStats': {'timeAcquiringMicros': {},
                                 'timeLockedMicros': {}},
                   'ns': '',
                   'numYields': 0,
                   'op': 'none',
                   'opid': 0,
                   'query': {},
                   'threadId': '0x7fa7bfffe700',
                   'waitingForLock': False},
                  {'active': False,
                   'desc': 'clientcursormon',
                   'lockStats': {'timeAcquiringMicros': {},
                                 'timeLockedMicros': {}},
                   'ns': '',
                   'numYields': 0,
                   'op': 'none',
                   'opid': 0,
                   'query': {},
                   'threadId': '0x7fa7c1e01700',
                   'waitingForLock': False},
                  {'active': False,
                   'desc': 'snapshotthread',
                   'lockStats': {'timeAcquiringMicros': {},
                                 'timeLockedMicros': {}},
                   'ns': '',
                   'numYields': 0,
                   'op': 'none',
                   'opid': 0,
                   'query': {},
                   'threadId': '0x7fa7c2802700',
                   'waitingForLock': False},
                  {'active': False,
                   'client': '192.168.101.43:52230',
                   'connectionId': 15,
                   'desc': 'conn15',
                   'lockStats': {'timeAcquiringMicros': {},
                                 'timeLockedMicros': {}},
                   'ns': '',
                   'numYields': 0,
                   'op': 'killcursors',
                   'opid': 22735367,
                   'query': {},
                   'threadId': '0x7fa7834fb700',
                   'waitingForLock': False},
                  {'active': False,
                   'client': '192.168.101.43:51872',
                   'connectionId': 13,
                   'desc': 'conn13',
                   'lockStats': {'timeAcquiringMicros': {},
                                 'timeLockedMicros': {'r': 0, 'w': 18}},
                   'ns': 'kolibri.nodes',
                   'numYields': 0,
                   'op': 'update',
                   'opid': 22735070,
                   'query': {'_id': 'kolibri-236-237-155368'},
                   'threadId': '0x7fa7833fa700',
                   'waitingForLock': False}]}

スタックしているように見える操作は、更新 $push である必要があります。私が試したもう1つのことは、db.last_status()です。

{'connectionId': 15, 'err': None, 'n': 0, 'ok': 1.0}

誰かがこれを理解するのを手伝ってくれて、(初心者向けに) アドバイス、何が起こっているのかを確認する方法、そして一般的なエラーに対するいくつかの便利な操作を教えてもらえますか?

4

1 に答える 1

7

Mongodb には、システム内で何が起こっているかについてある程度の透明性を提供する多くのツールがあります。あなたが試すことができます:

最初の 2 つは、mongodb のインストールに含める必要があります。3 つ目は 10gen から無料で利用できます。

于 2012-11-26T02:54:40.973 に答える