我的文档包含如下所示的地理区域。
"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
知道为什么会这样吗?我该如何进一步调试?
答案 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/