글 목록으로 돌아가기
최오키 개발블로그 2분 읽기

RabbitMQ Consumer 장애 패턴 Top 5

RabbitMQ 장애를 여러 번 겪다 보면 공통점이 보입니다.


RabbitMQ 장애를 여러 번 겪다 보면 공통점이 보입니다. 대부분의 문제는 RabbitMQ 자체가 아니라, 메시지를 처리하는 Consumer 쪽에서 반복적으로 발생 합니다.

이 글에서는 운영 환경에서 실제로 가장 많이 발생하는 Consumer 장애 패턴 5가지 를 증상 → 원인 → 확인 방법 → 대응 방법 순서로 정리했습니다.


🔥 장애 패턴 1. Consumer 프로세스가 죽어 있음

가장 흔한 패턴 이자, 가장 먼저 의심해야 할 상황입니다.

증상

• Queue 메시지가 계속 증가

• Ready 메시지만 증가

• RabbitMQ 화면에서 Consumers = 0

원인

• OOM (메모리 부족)

• 예외 발생 후 프로세스 종료

• 배포 중 서비스 미기동

확인 방법

ps -ef | grep java
systemctl status consumer-service

대응 방법

• Consumer 재기동

• 메모리 옵션(-Xmx) 확인

• 배포 후 기동 여부 체크


🔥 장애 패턴 2. 특정 메시지에서 처리 로직이 멈춤 (Poison Message)

메시지 하나가 문제를 일으켜 전체 처리를 막아버리는 케이스입니다.

증상

• Unacked 메시지가 계속 유지

• Queue가 줄지 않음

• 같은 로그가 반복 출력

원인

• 특정 데이터 형식 오류

• NullPointerException

• 예외 발생 후 ACK 미전송

확인 방법

• Consumer 로그에서 동일 메시지 반복 여부 확인

대응 방법

• try-catch 보강

• 실패 메시지 skip 처리

• Dead Letter Queue(DLQ) 도입


🔥 장애 패턴 3. DB Deadlock 또는 외부 API 지연

Consumer는 살아 있지만, 내부에서 오래 붙잡혀 있는 상태입니다.

증상

• Unacked 메시지 증가

• Consumer는 실행 중

• 처리 속도 급격히 저하

원인

• DB Deadlock

• 외부 API timeout

• 네트워크 지연

확인 방법

• Consumer 로그에서 DB / timeout 에러 확인

• APM(Pinpoint 등)에서 응답 시간 확인

대응 방법

• DB 트랜잭션 범위 축소

• timeout 설정 명시

• 재시도 로직에 제한 추가


🔥 장애 패턴 4. 처리량 부족 (Consumer 수가 적음)

장애처럼 보이지만 사실은 구조적인 병목 입니다.

증상

• Ready와 Unacked가 모두 증가

• 처리 중이긴 하나 속도가 따라가지 못함

원인

• Consumer 인스턴스 수 부족

• Prefetch 설정이 너무 큼

확인 방법

• RabbitMQ 메시지 유입량 vs 처리량 비교

대응 방법

• Consumer 스케일 아웃

• Prefetch Count 조정

• 처리 로직 성능 개선


🔥 장애 패턴 5. ACK 로직 누락 또는 잘못된 위치

개발 단계에서 가장 많이 실수하는 부분입니다.

증상

• Consumer는 정상 실행

• 메시지는 처리된 것 같지만 Queue 유지

• Unacked 메시지 지속

원인

• 예외 발생 시 ACK 미전송

• ACK를 너무 늦게 호출

• Auto ACK 설정 오해

확인 방법

• Consumer 코드에서 ACK 위치 확인

대응 방법

• finally 블록에서 ACK 처리 검토

• Auto ACK 사용 시 위험성 인지

• 명시적 ACK 권장


📊 장애 유형별 빠른 판별표

Ready만 증가 → Consumer 없음 또는 죽음

Unacked만 증가 → 처리 중 멈춤 / ACK 문제

둘 다 증가 → 처리량 부족


🔚 마치며

RabbitMQ 장애는 대부분 패턴이 반복 됩니다. 이 5가지만 익숙해져도, 알람이 떴을 때 “아, 이건 그 케이스네” 하고 바로 대응할 수 있습니다.

운영에서 중요한 건 완벽한 설계보다 빠르게 원인을 좁히고, 안전하게 복구하는 능력 입니다.

#RabbitMQ #Consumer #장애패턴 #운영 #MQ #비동기처리

원문 보기

Related posts

Other Git push 시 발생하는 non-fast-forward 오류 해결 방법 Other HTTP 504 Gateway Timeout 오류의 원인과 해결 방법 ElasticSearch Elasticsearch Unassigned Shards 문제 해결 가이드