🔥 MongoDB 운영 중 자주 발생하는 문제와 실전 대응법
MongoDB는 유연하고 강력한 NoSQL DB지만, 실 운영 환경에서는 다양한 이슈가 발생할 수 있습니다.
이 포스팅에서는 현장에서 자주 접하는 문제 상황과 그에 대한 대응 전략을 실제 경험 기반으로 정리해드립니다.
1️⃣ Oplog Overflow (오플로그 오버플로우)
- 🔍 문제 현상: Secondary 노드 복제 실패, 에러 로그에
missing oplog records
- 🧠 원인: Secondary가 복제 지연 상태일 때 Oplog에서 오래된 로그가 삭제됨
✅ 대응 방법
- Replication 지연 확인:
rs.printSlaveReplicationInfo()
- Secondary 초기화 후 재시작 (전체 동기화)
🛡️ 예방 전략
- Oplog 크기 충분히 확보 (디폴트보다 ↑)
- 복제 지연 감시 → 알람 설정
2️⃣ Replication Lag (복제 지연)
- 🔍 문제 현상: Secondary가 Primary 변경을 늦게 반영함
- 🧠 원인: 느린 네트워크, Disk I/O 병목, 쿼리 부하
✅ 대응 방법
rs.printSlaveReplicationInfo()
- 지연이 10초 이상이면 주의, 수 분이면 위험
- Secondary가 과부하 상태인지
top
또는mongotop
으로 확인
🛡️ 예방 전략
- 네트워크 품질 확인 (Private VPC 권장)
- Secondary에 백업, 분석 작업 몰리지 않도록 분리
3️⃣ Lock 경합 (Write/Read 경합)
- 🔍 문제 현상: 응답 지연, CPU 사용량 급증
- 🧠 원인: 동일 컬렉션에 대한 동시 쓰기, 대용량 업데이트
✅ 대응 방법
db.currentOp()
로 오래된 쿼리 확인killOp(opid)
로 불필요한 작업 중단
🛡️ 예방 전략
- 배치 작업은 슬라이스로 나눠서 실행
- 업데이트 쿼리는 조건 최소화, 필드 선택적으로 업데이트
4️⃣ 커넥션 수 초과 (Too Many Connections)
- 🔍 문제 현상: "Too many connections" 에러
- 🧠 원인: 커넥션 풀 미사용, 앱 재시도 로직 과잉
✅ 대응 방법
db.serverStatus().connections
- 앱의 커넥션 풀 설정 확인 (e.g., Mongoose, Spring Data 등)
- 최대 커넥션 수 조정:
maxIncomingConnections
파라미터
🛡️ 예방 전략
- 앱단에서 커넥션 풀 필수
- Atlas에서는 Auto-scaling + 경고 알림 활용
5️⃣ 쿼리 성능 저하 (Index 미사용 / Full Collection Scan)
- 🔍 문제 현상: 응답 시간 ↑, 서버 CPU 사용량 ↑
- 🧠 원인: 인덱스 누락, 복합 조건 쿼리의 비효율적 설계
✅ 대응 방법
db.collection.find({ ... }).explain("executionStats")
COLLSCAN
이면 인덱스 미사용- 적절한 인덱스 생성:
db.collection.createIndex()
🛡️ 예방 전략
- slow query log 활성화 & 주기적 리뷰
- 복합 인덱스는 자주 쓰는 순서로 구성
6️⃣ 디스크 공간 부족
- 🔍 문제 현상: MongoDB 다운, insert 불가
- 🧠 원인: oplog, log, WiredTiger cache가 디스크를 가득 채움
✅ 대응 방법
db.stats()
로 DB 사이즈 확인logRotate
설정으로 로그 압축
🛡️ 예방 전략
- 모니터링 도구에서 디스크 임계값 경고 설정
- 데이터 아카이빙 전략 운영 (cold data 이동)
✅ 마무리 요약
- Oplog & Replication Lag은 고가용성 핵심
- Lock 경합, 쿼리 성능 저하는 실시간 트래픽 대응력에 영향
- 모니터링 도구 & 경고 알람은 반드시 설정해야 함
- 지속적인 점검 & 튜닝 없이는 MongoDB도 결국 느려집니다
도움이 되셨다면 공감과 구독도 부탁드립니다! 😊
'NoSQL > MongoDB' 카테고리의 다른 글
[MongoDB] RDBMS DBA 관점에서의 MongoDB 커리큘럼 (0) | 2025.04.25 |
---|---|
[MongoDB] 성능 튜닝 실전편: 인덱스 전략과 Aggregation Pipeline 최적화 (0) | 2025.04.21 |
[MongoDB] MongoDB DBA가 꼭 챙겨야 할 관리 포인트 정리 (0) | 2025.04.19 |
[MongoDB] MongoDB OpLog 변경하기 (0) | 2025.04.18 |
[MongoDB] MongoDB 기본기, RDBMS와 비교하며 쉽게 이해하기 (0) | 2025.04.18 |