[node.js] mongoError : 토폴로지가 파괴되었습니다.


Answers

나는 Jason의 답변이 받아 들여 졌음을 알고 있지만 Mongoose와 같은 문제가 있었고 Mongodb의 연결 상태를 유지하기 위해 다음과 같은 설정을 적용 할 것을 권장했다 .

var options = {
  server: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } },
  replset: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } }
};
mongoose.connect(secrets.db, options);

이 회신이 "토폴로지가 파괴되었습니다"라는 오류를 가진 다른 사람들을 도울 수 있기를 바랍니다.

Question

Restift와 Mongoose가있는 node.js에 REST 서비스가 내장되어 있고 mongoDB에는 30,000 개의 정규 크기 문서가있는 콜렉션이 있습니다. 내 노드 서비스가 pmx와 pm2를 통해 실행됩니다.

어제 갑자기 노드가 "MongoError : Topology was destroyed"메시지와 함께 오류를 제거하기 시작했습니다. 나는 이것이 무엇을 의미하는지, 그리고 아마도 이것을 유발할 수 있었는지 전혀 모른다. Google 검색시 검색 할 항목이 많지 않습니다. 그래서 여기서 물어볼 줄 알았다.

오늘 노드 서비스를 다시 시작한 후에는 오류가 발생하는 것을 막았습니다. 또한이 중 하나가 프로덕션 환경에서 실행되고 있으며,이 작업이 특정 시점에 설치 프로그램의 중요한 부분에 일어날 수 있다는 것을 두려워합니다.

언급 된 패키지의 다음 버전을 사용하고 있습니다.

  • 몽구스 : 4.0.3
  • restify : 3.0.3
  • 노드 : 0.10.25



내 MongoDb Compass 커뮤니티에 새 데이터베이스를 만들면서이 오류가 발생했습니다. 문제는 내 몽고드와 관련된 것이 었습니다. 그래서 수정으로 나는 Mongod 명령을 선행으로 실행해야했습니다.

C:\Program Files\MongoDB\Server\3.6\bin>mongod

해당 명령을 실행 한 후 데이터베이스를 만들 수있었습니다.

희망이 도움이됩니다.




Gaafar의 대답에 대한 사소한 추가만으로 감가 상각 경고를 받았습니다. 서버 객체 대신에 다음과 같이 :

MongoClient.connect(MONGO_URL, {
    server: {
        reconnectTries: Number.MAX_VALUE,
        reconnectInterval: 1000
    }
});

최상위 오브젝트로 이동할 수 있습니다. 기본적으로 서버 객체에서 꺼내서 다음과 같이 옵션 객체에 넣으십시오.

MongoClient.connect(MONGO_URL, {
    reconnectTries: Number.MAX_VALUE,
    reconnectInterval: 1000
});



" 연결 "메뉴로 가서 " 연결 ... "하위 메뉴를 클릭해야합니다. 이렇게하면 새로운 MongoDB Compass Community 창이 열리 며,이 창을 통해 다시 연결할 수 있습니다.