메시지 전송 기능 추가로 인한 MongoDB 에러 디버깅

ssongyi·4일 전
0

Java/Spring 트러블슈팅

목록 보기
10/12

메시지 전송 기능 (WebSocket) 로직을 추가하고 프로젝트를 실행하자 MongoDB 에러가 터졌다.

그 전에는 Warning 정도였는데 이제는 Error 로 실행이 되지 않았다.

🚩 왜 메시지 전송 기능 실행 안 해도 Mongo 에러가 날까?

그저 로직만 있는건데 왜 Error 가 발발할까?

1️⃣ Spring Boot 의 AutoConfiguration 특성

  • MongoDB 의존성(spring-boot-starter-data-mongodb) 을 추가하면, 👉 Spring Boot 가 애플리케이션 시작 시점에 자동으로 MongoDB 관련 빈(MongoClient 등)을 초기화하려고 시도함 👉 이게 ApplicationContext 초기화 단계에서 일어남 → 내가 WebSocket 을 실행하든 안 하든 상관없음

2️⃣ 그럼 왜 갑자기?

이전에는 Mongo 관련 빈이 없었음 → 에러 X

지금은 ChatMessageService 등 만들면서 Mongo 의존성 or Bean 추가됨

Spring Boot 가 MongoClient 를 무조건 띄우려고 함

3️⃣ 실제로 에러 시점

2025-06-09T21:31:50.278+09:00  WARN 42406 --- MongoReactiveHealthIndicator : Mongo health check failed

—> 이게 애플리케이션 startup 단계에서 발생

상황결과
ChatMessage 전송 기능 실행 X그래도 에러 발생
이유Mongo 의존성 추가됨 → Spring Boot 가 startup 시 MongoClient 초기화 시도
영향Mongo 가 안 떠있으면 health check 실패 / 일부 빈 등록 실패 가능

에러 요약:

Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: localhost/[0:0:0:0:0:0:0:1]:27017

👉 localhost:27017MongoDB 기본 포트

👉 현재 애플리케이션이 MongoDB 에 연결 시도했는데 → 연결 거부 (Connection refused) 발생

→ 애플리케이션이 MongoDB 사용 설정이 되어 있음 (Spring Data MongoDB 적용 중)

→ Health check 도 시도 (mongo health check failed 로그 있음)

→ 그런데 MongoDB 서버가 현재 로컬에서 꺼져 있음 (port 27017 에 없음)

원인설명
MongoDB 서버가 꺼져있음localhost:27017 연결 실패 → Connection refused
Spring Boot app 에서 Mongo 연결 시도 중MongoClient 설정 자동 적용됨
Health check 실패/actuator/health 확인 시 mongo 부분 unhealthy

해결 방법

MongoDB 서버 실행

  • Docker 로 띄웠는지? → Docker 로 띄워야 됨 (docker-compose up 등)
  • 로컬 설치 했으면? → brew services start mongodb-community 이런 걸로 실행

레포지토리에 docker-compose.yml 가 따로 없어서 준비된 Mongo 가 없다고 판단했다.

트러블 슈팅

# 가장 기본적인 Mongo 실행 (로컬에서 27017 포트로)
docker run --name mongo -d -p 27017:27017 mongo:6.0

—> 이랬더니 바로 다른 에러가 났다..

—> 원래라면 localhost:27017 에 Mongo 가 떠서 에러가 나지 않는다.

—> Docker Engine(데몬) 이 실행되고 있지 않아서 나는 에러다.

Docker 작동 방식

  • CLI 명령어(docker run 등)Docker Engine(데몬) → 컨테이너 실행
  • 근데 Engine(데몬) 이 꺼져있으면 아무 명령어도 실행하지 못한다.

Mac에서 확인/해결법 ✅

1️⃣ Docker Desktop 실행 확인

👉 메뉴바에 고래 아이콘 🐳 떠 있는지 확인

  • 안 떠 있으면 → Docker Desktop 실행하기 (Launchpad → Docker 검색 → 실행)

2️⃣ 정상 실행되었는지 확인

docker info

→ 여기서 정상 정보 나오면 데몬 실행 중 (이제 docker run 가능)

3️⃣ mongo:6.0 이미지를 받아서 컨테이너 띄우기

docker run --name mongo -d -p 27017:27017 mongo:6.0

👉 Docker Desktop 화면에도 mongo 컨테이너 생김

4️⃣ MongoDB 컨테이너 정상 실행 확인

docker ps


MongoDB 에러로 인해 실행되지 않는 에러를 디버깅했다.

0개의 댓글