2013-09-28 7 views
1

다음과 같은 지역 필드가 포함 된 문서가 있습니다.MongoDB ensureIndex : 동료에 의한 연결 재설정

"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

당신이 우리에게 MongoDB의 버전을 말할 수이 튜토리얼을 따라하는 것입니다? –

+0

db.serverStatus()에 따르면 Mongo 버전 2.4.6을 실행 중입니다. 내 OS는 Ubuntu 12.04.2 LTS입니다. –

답변

2

그래서 결국 알아 냈습니다. Mongo를 Amazon EC2 Micro Instance에 설치했습니다. 기본적으로 마이크로 인스턴스에는 613MB의 메모리가 있으며 스왑 공간이 없습니다.

내가 만들려고했던 공간 인덱스는 약 1 백만 개의 문서를 넘었습니다. 그래서 내 생각에이 인덱스를 만드는 것은 사용 가능한 모든 RAM을 다 써 버렸기 때문에 스왑 공간이 없기 때문에 리눅스 커널은 몽고 프로세스를 죽일 수 밖에 없었습니다.

같은 문제가 거기 누구를위한 솔루션은 http://cloudstory.in/2012/02/adding-swap-space-to-amazon-ec2-linux-micro-instance-to-increase-the-performance/

+0

이 오류가 발생하면 색인이 여전히 제대로 작성되었는지 알 수 있습니까? 겉보기에는 mongo 서비스가 잘 시작되지만 인덱스는 실제로 괜찮습니까? –

+0

@JustinHelgerson 한때 비슷한 문제가있었습니다. 이상한 성능 문제로 인해 나중에 인덱스를 다시 작성해야했습니다. – Zarathustra

관련 문제