아파치 카프카 - 컨슈머 관련 설정

함궈·2023년 10월 11일
0

아파치카프카

목록 보기
8/10
post-thumbnail

Consumer Offset Reset Behavior

offset.retention.minutes (브로커 설정)

기본값으로 카프카는 7일의 retention 기간이 설정되어 있다.

컨슈머가 7일 넘게 정지되어 있다면 읽으려는 오프셋이 무효화된다.

auto.offset.reset =

  • latest : log의 끝 부분부터 읽을 것이다.
  • earliest : log의 시작 지점부터 읽을 것이다.
  • none : 오프셋을 찾을 수 없다면 exception을 던진다.

Consumer Heartbeat Thread

heartbeat.interval.ms 기본값 3초
지정한 시간 간격으로 컨슈머가 작동 중이라는 신호를 보낸다.
대개 session.timeout.ms의 1/3로 설정한다.

session.timeout.ms Kafka 3.0 이상부터는 기본값 45초, 미만은 10초
이 시간동안 heartbeat가 전송되지 않으면, 컨슈머가 죽은 것으로 간주한다.
낮게 설정한다면 컨슈머 리밸런스를 빨리 시작할 수 있다.

Consumer Poll Thread

max.poll.interval.ms 기본값 5분
컨슈머가 사용중이 아닌 것으로 간주할 때 까지 두번의 poll 사이의 시간 설정

컨슈머가 지속적으로 heartbeat 만 보내고 실제로 메시지를 가져가지 않는 경우가 있을 수 있다.
이럴 때 해당 컨슈머가 특정한 파티션을 무한정으로 해당 파티션을 점유할 수 없도록 주기적으로 poll 을 호출하지 않으면 장애라고 판단한다. 이후 컨슈머 그룹에서 제외한 후, 동일 컨슈머 그룹 내의 다른 컨슈머가 해당 파티션에서 메시지를 들고 갈 수 있도록 한다.

max.poll.records 기본값 500
요청 당 한 번에 가져올 레코드 개수
메시지 크기가 큰 경우 줄인다. 레코드 처리 시간이 오래 걸릴 수 있기 때문이다.

Consumer Poll Behavior

fetch.min.bytes 기본값 1

데이터가 최소 1byte가 되지 않으면 필요없다라고 해석하자.
요청 당 카프카에서 가져올 최소 데이터 개수
이 값을 높이면 레이턴시를 대가로 요청 수를 낮추어 처리량을 높일 수 있다.

fetch.max.wait.ms 기본값 500
fetch.min.bytes를 충족할 용량이 되지 않았을 때 최대로 기다리는 시간을 지정

Consumer가 처리량을 넘어설 때 개선하기

max.partition.fetch.bytes 기본값 1MB
서버가 반환할 파티션당 데이터의 최대 양
100개 파티션이라면, 100MB의 램이 필요

fetch.max.bytes 기본값 55MB
각 fetch 요청에서 리턴할 데이터의 최대 양

출처

https://pasudo123.tistory.com/435

Udemy Apache Kafka

0개의 댓글