MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017

iiingkeep·2024년 5월 14일

Errors

목록 보기
3/6

MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017


상황: Mongodb를 이용하던 중 노트북을 절전모드로 한 뒤 한동안 이용하지 않았더니 다시 연결하려고 할 때 위의 에러 메세지와 함께 연결이 안되는 현상 발생


강의를 들으며 실습을 하고 있었는데, 이전까지 항상 잘 연결이 되던 mongodb가 연결이 안된다는 메세지가 떴다.
MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017

전체적인 메세지가 mongodb에 연결할 수 없다는 이야기.
관리자권한으로 프롬프트를 열어 몇 가지 시도를 먼저 해 봤다.
mongod를 입력해 봤을 때는 메세지가 잘 떴다.
하지만 mongosh 명령어를 입력하니 다음과 같이 같은 에러가 발생하는 것을 발견
MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017

구글링을 해 보니 mongodb를 다시 시작해보라는 이야기가 많아 프롬프트를 다시 껐다가 켜 보기도 하고 compass도 연결 해제 후 다시 연결해보려고 했지만 같은 에러가 반복되었다.
그러다가 mongodb를 다시 시작하라는 것은 시스템 - 서비스 설정에서 다시 시작해야 한다는 의미라는 것을 알게 되었다.


방법은 다음과 같다.
검색상자에서 '서비스'를 검색하면 시스템 - 서비스 항목을 볼 수 있다.
클릭하여 들어간다.

MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017
내 컴퓨터에서 실행할 수 있는 다양한 서비스의 목록이 나타나는데,
mongoDB Server (MongoDB)를 찾아 본다.
이 때, mongoDB Server 상태 속성의 '실행' 문구 유무를 확인한다.
다른 몇몇 서비스가 '실행' 상태인데 mongoDB Server는 실행중이지 않았다.
MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017
MongoDB Server를 '실행' 상태로 전환하기 위해 마우스 우 클릭 후 시작버튼 클릭.
나중에 실행중이던 서버를 중지할 때도 같은 방법으로 '중지'를 클릭하면 된다.
MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017
잠시 기다려보면 MongoDB Server의 상태가 '실행'으로 바뀐 것을 볼 수 있다.
MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017
연결 상태를 다시 확인해보기 위해 명령 프롬프트에 mongosh를 입력해보면 연결이 잘 되는 것을 확인할 수 있다.
작업을 하던 VSCode로 돌아가 터미널을 확인해보니 역시 연결이 잘 된다!
MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017

mongoDB 사이트에 들어가 보니 해당 내용에 대한 공식 문서가 있었다.
https://www.mongodb.com/ko-kr/docs/manual/tutorial/install-mongodb-on-windows/


절전모드를 열심히 하던 다른 때에도 실행이 중지된 적이 없었는데, 갑자기 중지된 이유가 궁금해 mongoDB의 log를 확인 해 보았다.
log파일의 경로는 mongoDB설치 시 커스텀하지 않고 자동으로 설치되도록 했을 때 다음과 같다.

C:\Program Files\MongoDB\Server\7.0\mongod.txt




이 일로 인해 log 파일을 처음으로 확인 해 봤는데, 1분마다 자동으로 로그를 기록하고 있었다. 그만큼 내용이 굉장히 방대해서 찾는데 시간이 좀 걸렸다.
MongoDB log바로 이 부분! 1분마다 기록되던 로그가 12:26:36 이후로 끊겨있다가 내가 서비스를 이용해 MongoDB Server를 연결한 시점인 13:21:36부터 기록이 다시 시작된다.

처음에는 아무것도 몰라 서버 연결이 끊겼다가 다시 실행했으므로 로그가 기록되지 않은 지점을 찾으려고 시간으로 확인 했는데, MongoDB Server가 다시 연결될 때 'SERVER RESTARTED' 메세지를 출력하는 것을 확인했다. 다음에 로그를 찾을 때는 이 텍스트를 검색하면 바로 찾을 수 있을 것이다.



그렇다면 무슨일이 있었길래 MongoDB 서비스 중지가 된 걸까?
마지막으로 12:26:36 에 기록된 로그들을 확인하던 중 다음의 메세지를 볼 수 있었다.
MongoDB logMongoDB log
반복적으로 몇 번 등장하는 'out of memory' 문구와,
두번째 로그에서 "s":"F" 부분을 주의깊게 봤다. 다른 로그들은 "s":"I"가 기재되어 있는데 이 부분만 "F"로 되어있었다.
로그 메세지에 대한 해석은 mongoDB 사이트에서 확인할 수 있는데,
(https://www.mongodb.com/ko-kr/docs/manual/reference/log-messages)
"s"는 "심각도"를 나타내며 "F"는 "치명적" 으로 가장 심각한 상태라고 한다.
MongoDB log
거기에 더해 확인한 사항: 디스크 공간이 있어야 한다.
MongoDB log

반복적인 'out of memory' 문구와 위의 사항들을 종합해 봤을 때, 로그 볼륨의 디스크 공간이 부족해 mongoDB Server가 중지 된 듯 하다.
메모리 문제가 원인이었다니... 정리를 할 필요가 있어 보인다.

아무튼, 간단해 보였던 에러로 인해 로그 파일도 확인해 볼 수 있는 좋은 기회였다. 내 컴퓨터의 문제도 알게 된 것은 덤...^_^


원인: 로그 볼륨의 디스크 공간 부족으로 인한 MongoDB Server의 자동 중지

해결: 시스템 - 서비스 메뉴로 들어가 MongoDB Server를 재시작 + 디스크 공간 확보

profile
혁신적인 백엔드 개발자가 되고자, 기록✏️

0개의 댓글