
백엔드
Kafka Rebalancing과 메시지 처리 병목 개선
두줄요약
Kafka Rebalancing 원인을 메시지 처리 지연과 DB 저장 병목에서 찾고, 운영 완화를 위해 설정을 조정했습니다. 이후 Batch Insert로 처리 시간을 줄여 반복 Rebalancing을 완화했습니다.
문제 상황
- Kafka 메시지가 정상적으로 Consume되지 않고 Consumer Group Rebalancing이 약 10분 간격으로 반복 발생
- max.poll.interval.ms가 10분으로 설정된 상태에서 메시지 1건 처리 시간이 10분 이상 소요
- Kafka 수신 자체보다 메시지 처리 시간이 길어 Consumer 처리 간격 제한을 초과한 상황
원인 분석
- 하나의 메시지 처리 과정에서 약 46,000건의 데이터를 MSSQL에 저장
- 여러 건의 DB 저장 작업이 누적되며 전체 처리 시간이 크게 증가
- DB 저장 구간이 메시지 처리 병목으로 확인
해결 방법
- 우선 운영 완화를 위해 max.poll.interval.ms를 30분으로 상향
- JPA 전역 Batch 설정 대신 해당 저장 로직에만 JdbcTemplate.batchUpdate() 적용
- Batch Insert에서도 MSSQL NEWID()를 사용해 기존 ID 생성 방식 유지
적용해볼 점
- Rebalancing을 Kafka 설정 문제로만 보지 말고 실제 메시지 처리 흐름과 함께 확인
- 설정값 상향과 코드 개선을 분리해 운영 완화와 근본 원인 개선을 병행


