1

我有包含如下地理字段的文档。

"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

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

4

1 回答 1

2

所以我终于弄明白了。我在 Amazon EC2 微型实例上安装了 Mongo。默认情况下,微型实例带有 613MB 的内存并且没有交换空间。

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

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

于 2013-09-30T02:43:35.370 回答