6

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 但他的问题是 ulimit 问题。我的内存设置已经是无限的。

其他人在 .skip() 或 .limit() 给出了不合理的大值时遇到了特殊问题,但这里没有发生这种情况。

有谁知道可能出了什么问题?

4

1 回答 1

7

MongoDB 文档建议为 MongoDB 提供足够的交换空间,尽管这不是必需的:http ://docs.mongodb.org/manual/administration/production-notes/#ProductionNotes-Swap

我正在使用 Windows Azure 托管,我发现他们的虚拟服务器默认没有交换空间:

$ sudo swapon -s
Filename                Type        Size    Used    Priority

(Azure 默认没有交换空间:第 1部分和第 2 部分

所以我找到了创建交换文件的指南:https ://www.digitalocean.com/community/articles/how-to-add-swap-on-ubuntu-12-04

它解决了我的问题!

笔记:

  1. 该指南说 Ubuntu 12.04,但相同的步骤在 13.10 上对我有用。
  2. 您应该使用大约一半 RAM 大小的交换文件,而不是指南中使用的 512MB。

我希望这可以帮助其他人解决这个问题。

于 2014-01-25T09:47:53.357 回答