2012-08-02 41 views
3

由於缺少內存mongod自動關閉。 (Debian的)MongoDB錯誤:無法連接到服務器...在createPrivateMap中打開/創建失敗

~# reboot 
~# mongo 
MongoDB shell version: 2.0.6 
connecting to: test 
Thu Aug 2 13:12:26 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:8 4 
exception: connect failed 
~# mongo 127.0.0.1:27017 
MongoDB shell version: 2.0.6 
connecting to: 127.0.0.1:27017/test 
> use database 
> db.repairDatabase() 
{ 
     "errmsg" : "exception: file /var/lib/mongodb/$tmp_repairDatabase_0/datab  ase.1 open/create failed in createPrivateMap (look in log for more information)"       , 
     "code" : 13636, 
     "ok" : 0 
} 
  1. 錯誤:無法連接到服務器...配置中的錯誤,不知道爲什麼?
  2. /var/lib/mongodb/$ tmp_repairDatabase_0和/ var/lib/mongodb/_tmp臨時文件夾?我可以刪除它們嗎?

數據庫運行良好,但是我擔心一週前我的基地會發生同樣的事情。我不得不完全重新安裝mongodb。 link

UPD:

只需增加服務器上的RAM大小和3GB的db.repairDatabase進行了() - 一切順利。

問題是內存不足。 (內存映射文件) 沒有啓動mongod - 佔用136Kb的內存。 啓動mongod後 - 1100Kb內存被佔用。 在我的數據庫對象1165916. 對象創建的越大,佔用的內存就越多。 如何減少mongodb內存的消耗?或者唯一的出路 - 更多的記憶?

+0

當你在shell中打這個錯誤時,你能發佈錯誤來自於mongod日誌嗎?你還可以在/ var/lib/mongodb文件夾上發佈'ls -al'的輸出嗎? – 2012-08-02 11:33:19

+0

也可以重新確認/ proc/sys/vm/overcommit_memory的設置嗎?它應該是0 – 2012-08-02 11:43:42

回答

2

我認爲這和你以前的問題有着相同的根源 - 缺乏資源。您在之前的消息中指出,只有大約1.4GB的內存,並且在這種情況下,如果分配的內存更多,則修復成功。修復必須經過並重寫整個數據集,因此它將變得密集。

還有就是MongoDB的是如何在這裏使用內存的詳細介紹:

http://www.mongodb.org/display/DOCS/Checking+Server+Memory+Usage

不要忘記,你的RAM工作集包括索引和數據,所以它不只是一個事對象的數量。

如果您的工作數據集大部分時間應該在1.4GB以內,那麼您可能不需要額外的RAM,但是,當它超過這些限制時,您將不得不配置一些交換避免OOM Killer和其他問題 - 有關更多信息,請參見herehere)。在不增加內存的情況下,準備好這樣的使用速度也很慢。在之前的問題中,您沒有配置交換 - 如果您執行某些耗費所有可用內存的操作(例如修復),則不會爲操作系統提供任何位置。

關於初始連接失敗,我相信它會嘗試在本地主機連接:27017默認情況下(而非IP),如果沒有指定參數 - 是否有任何機會,你/etc/hosts文件返回IPV6地址什麼的類似。如果嘗試手動連接到本地主機,您會失敗嗎?

+0

/proc/sys/vm/overcommit_memory - 0 如何減少mongodb內存的消耗?或者唯一的出路 - 更多的記憶? – 2012-08-02 12:12:56

+0

非常感謝您的回答! – 2012-08-02 18:59:39

+0

也有內存不足的問題,重新啓動mongo沒有幫助。但是,我停止了其他批量內存消耗服務(elasticsearch),然後重新啓動了mongo - 它運行良好。然後開始彈性搜索,一切正常。 – 2014-01-20 12:56:57

相關問題