MongoDB ensureIndex:由peer重置连接

时间:2013-09-28 17:53:54

标签: mongodb

我的文档包含如下所示的地理区域。

"geo" : {
    "type" : "Point",
    "coordinates" : [
        37.44609999,
        -121.88355687
    ]
},

当我尝试向此集合添加空间索引时,它会考虑一段时间,然后我会收到错误。

db.data.ensureIndex({'geo.coordinates': '2dsphere'})

Sat Sep 28 17:49:33.451 Socket recv() errno:104 Connection reset by peer 127.0.0.1:27017
Sat Sep 28 17:49:33.494 SocketException: remote: 127.0.0.1:27017 error: 9001 socket exception [RECV_ERROR] server [127.0.0.1:27017] 
Sat Sep 28 17:49:33.497 DBClientCursor::init call() failed
Sat Sep 28 17:49:33.634 Error: error doing query: failed at src/mongo/shell/query.js:78
Sat Sep 28 17:49:33.650 trying reconnect to 127.0.0.1:27017
Sat Sep 28 17:49:33.654 reconnect 127.0.0.1:27017 failed couldn't connect to server 127.0.0.1:27017

知道为什么会这样吗?我该如何进一步调试?

1 个答案:

答案 0 :(得分:2)

所以我终于搞清楚了。我在Amazon EC2 Micro Instance上安装了Mongo。默认情况下,微实例带有613MB的内存,没有交换空间。

我试图创建的空间索引超过大约100万个文档。所以我的猜测是创建这个索引用尽了所有可用的RAM,因此没有交换空间,Linux内核别无选择,只能杀死Mongo进程。

任何有相同问题的人的解决方案都是遵循本教程http://cloudstory.in/2012/02/adding-swap-space-to-amazon-ec2-linux-micro-instance-to-increase-the-performance/