MongoDB недостаточно памяти

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: нехватка памяти Но его проблема была проблемой ulimit. Мои настройки памяти уже безграничны.

У других были особые проблемы с.skip() или.limit() из-за неоправданно больших значений, но здесь этого не происходит.

Кто-нибудь знает, что может быть не так?

1 ответ

Документы MongoDB рекомендуют иметь достаточно места подкачки для MongoDB, несмотря на то, что это не является обязательным требованием: http://docs.mongodb.org/manual/administration/production-notes/

Я использую хостинг 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. Вы должны использовать файл подкачки примерно в два раза меньше вашей оперативной памяти, а не 512 МБ, используемых в руководстве.

Я надеюсь, что это помогает другим решить эту проблему.

Другие вопросы по тегам