Apache Kafka 사용 시 발생할 수 있는 주요 오류 유형과 그 해결 방법을 정리해 보겠습니다.
1. 네트워크 및 연결 오류
❌ 오류: Connection to broker <broker_id> failed
📌 원인: 브로커와의 네트워크 연결 문제, 브로커 다운, 방화벽 문제 등
✅ 해결 방법:
zookeeper와broker가 실행 중인지 확인 (ps aux | grep kafka)listeners및advertised.listeners설정 확인 (server.properties)- 방화벽 설정 (
iptables -L,firewalld)을 점검하여 포트가 열려 있는지 확인
2. 브로커 및 토픽 관련 오류
❌ 오류: Leader not available for partition <partition_id>
📌 원인:
- 브로커가 다운되거나 리더 선출이 되지 않음
- ISR (In-Sync Replica) 부족
✅ 해결 방법: - 브로커 상태 확인 (
kafka-topics.sh --describe --bootstrap-server <broker>). - ISR이 낮다면
min.insync.replicas값을 낮추거나 브로커를 재시작. replication.factor가 1이면 가용성이 떨어지므로 2 이상으로 설정.
❌ 오류: Unknown topic or partition
📌 원인:
- 토픽이 존재하지 않음
✅ 해결 방법: - 토픽 목록 확인 (
kafka-topics.sh --list --bootstrap-server <broker>) - 토픽이 없으면 새로 생성 (
kafka-topics.sh --create ...) - 자동 토픽 생성을 허용하려면
auto.create.topics.enable=true설정
3. 프로듀서 관련 오류
❌ 오류: TimeoutException: Expiring <num> record(s) due to timeout
📌 원인:
- 브로커 응답이 지연됨
- 네트워크 지연 또는 브로커 장애
✅ 해결 방법: request.timeout.ms값을 늘리기acks=all설정을 줄이고acks=1로 변경하여 빠른 응답 확보- 브로커 상태 및 네트워크 점검
❌ 오류: RecordTooLargeException
📌 원인:
- 메시지 크기가
message.max.bytes설정을 초과함
✅ 해결 방법: - 브로커에서
message.max.bytes값을 증가 - 프로듀서에서
max.request.size값을 증가
4. 컨슈머 관련 오류
❌ 오류: OffsetOutOfRangeException
📌 원인:
- 컨슈머가 요청한 오프셋이 브로커에 없음
✅ 해결 방법: - 컨슈머 그룹 리셋 (
auto.offset.reset=earliest또는latest) - 수동으로 오프셋 조정 (
kafka-consumer-groups.sh --reset-offsets ...)
❌ 오류: Rebalance in progress
📌 원인:
- 컨슈머 그룹의 멤버가 변동되어 리밸런싱이 자주 발생
✅ 해결 방법: - 컨슈머 수 줄이기 또는
session.timeout.ms값 증가 partition.assignment.strategy를 안정적인 방식으로 변경
Kafka 사용 시 위와 같은 오류가 자주 발생할 수 있으니, 로그를 잘 확인하면서 적절한 설정을 적용하면 해결할 수 있습니다! 🚀