목록 보기
Kafka Rebalancing과 메시지 처리 병목 개선
백엔드

Kafka Rebalancing과 메시지 처리 병목 개선

넥스트리
넥스트리
2026년 8월 27일

두줄요약

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 설정 문제로만 보지 말고 실제 메시지 처리 흐름과 함께 확인
  • 설정값 상향과 코드 개선을 분리해 운영 완화와 근본 원인 개선을 병행

다음 읽기

#JPA 주제를 이어서 읽기

JPA 배치 인서트 vs JDBC배치 인서트

대용량 데이터 등록에서 JPA 배치와 JDBC 배치를 직접 비교해 성능을 확인했습니다. 단일 MySQL 환경에서는 JDBC 템플릿 배치를 선택해 생산성과 속도를 함께 높였습니다.

넥스트리
넥스트리
백엔드

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...