MongoDB错误:无法连接到服务器...在createPrivateMap中打开/创建失败

时间:2012-08-02 09:55:25

标签: mongodb debian database

由于内存不足,mongod会自动关闭。 (Debian的)

~# 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一个临时文件夹?我可以删除它们吗?
  3. 数据库工作正常,但我担心一周前我的基地会发生什么。我不得不完全重新安装mongodb。 link

    UPD:

    只是增加了服务器上的RAM大小并执行了3Gb db.repairDatabase() - 一切顺利。

    问题在于缺乏记忆力。 (内存映射文件) 没有启动mongod - 占用了136Kb的内存。 启动mongod后 - 1100Kb内存被占用。 在我的数据库对象1165916中。 创建对象越大,占用的内存就越多。 如何减少mongodb内存的消耗?或唯一的出路 - 更多的记忆?

2 个答案:

答案 0 :(得分:2)

我认为这和你以前的问题有着相同的根本原因 - 缺乏资源。您在上一条消息中指出您只有~1.4GB的内存,在这种情况下,当您分配了更多内存时,修复成功。修复必须遍历并重写整个数据集,因此它将是密集的。

有关MongoDB如何在此处使用内存的详细说明:

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

不要忘记,RAM中的工作集包括索引和数据,因此不仅仅是对象数量的问题。

如果您的工作数据集大部分时间都适合1.4GB,那么您可能不需要额外的RAM,但是,当它超过这些限制时,您将不得不配置一些交换(以避免OOM杀手和其他问题 - 有关更多信息,请参阅herehere。在不增加RAM的情况下,准备好这样的使用也非常慢。在上一期中,您没有配置交换 - 如果您执行的操作消耗了所有可用内存(例如修复),则不会使操作系统无处可去。

关于初始连接失败,我认为如果没有指定参数,默认情况下可能会尝试连接localhost:27017(而不是IP) - 你的/etc/hosts文件是否有可能返回IPV6地址或类似的东西。如果尝试手动连接到localhost,是否会失败?

答案 1 :(得分:0)

    “ulimit -v unlimited”对我有用。