MongoDB崩溃了。当我打开mongodb.log文件时,我得到:
$ tail /var/log/mongodb/mongodb.log
Sat Jan 25 03:06:56.153 [initandlisten] connection accepted from 127.0.0.1:58492 #63331 (263 connections now open)
Sat Jan 25 03:07:02.694 out of memory, printing stack and exiting:
0xde05e1 0x6cf37e 0x12129fd 0xc490c3 0xc4404e 0xc44196 0xda4913 0xda53e4 0xe28e69 0x7f5cbaa19e9a 0x7f5cb9d2c3fd
/usr/bin/mongod(_ZN5mongo15printStackTraceERSo+0x21) [0xde05e1]
/usr/bin/mongod(_ZN5mongo14my_new_handlerEv+0x3e) [0x6cf37e]
/usr/bin/mongod(_Znam+0x6d) [0x12129fd]
/usr/bin/mongod(_ZNK5mongo3Top8cloneMapERNS_9StringMapINS0_14CollectionDataEEE+0x83) [0xc490c3]
/usr/bin/mongod(_ZN5mongo9Snapshots12takeSnapshotEv+0x4e) [0xc4404e]
/usr/bin/mongod(_ZN5mongo14SnapshotThread3runEv+0x66) [0xc44196]
/usr/bin/mongod(_ZN5mongo13BackgroundJob7jobBodyEN5boost10shared_ptrINS0_9JobStatusEEE+0xc3) [0xda4913]
/usr/bin/mongod(_ZN5boost6detail11thread_dataINS_3_bi6bind_tIvNS_4_mfi3mf1IvN5mongo13BackgroundJobENS_10shared_ptrINS7_9JobStatusEEEEENS2_5list2INS2_5valueIPS7_EENSD_ISA_EEEEEEE3runEv+0x74) [0xda53e4]
/usr/bin/mongod() [0xe28e69]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x7e9a) [0x7f5cbaa19e9a]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7f5cb9d2c3fd]
这个问题听起来很相似:MongoDB: out of memory 但他的问题是一个极端问题。我的记忆设置已无限制。
其他人对.skip()或.limit()的特殊问题给出了不合理的大值,但这并没有发生在这里。
任何人都知道可能出现的问题?
答案 0 :(得分:7)
MongoDB文档建议为MongoDB提供足够的交换空间,尽管它不是必需的:http://docs.mongodb.org/manual/administration/production-notes/#ProductionNotes-Swap
我正在使用Windows Azure托管,我发现他们的虚拟服务器默认没有交换空间:
$ sudo swapon -s
Filename Type Size Used Priority
(Azure默认为无交换空间:Part 1& Part 2)
所以我找到了创建交换文件的指南:https://www.digitalocean.com/community/articles/how-to-add-swap-on-ubuntu-12-04
它解决了我的问题!
注意:
我希望这有助于其他人解决这个问题。