Kafka Consumer heartbeat 불안정으로 반복 rebalance가 발생하는 증상이 나타난다.
일시적인 heartbeat 유실을 허용하도록 타임아웃을 조정하는 방법이다. 세션 타임아웃은 broker의 group.min.session.timeout.ms와 group.max.session.timeout.ms 범위 안이어야 한다.
session.timeout.ms를 heartbeat.interval.ms의 3배보다 조금 크게 설정하고 두 값을 함께 조정한다. 사례의 예시는 60000ms와 200000ms다.
명령 예시는 문서 작성 시 보강한 것이며 대상 시스템에서 실행 검증하지 않았다.
heartbeat.interval.ms=60000
session.timeout.ms=200000
group.min.session.timeout.ms와 group.max.session.timeout.ms 범위에 들어가는지 확인한다. 일반적으로 heartbeat는 session timeout의 1/3 이하로 둔다.max.poll.interval.ms를 넘는 현상은 heartbeat 조정과 별도로 처리한다.rebalance 빈도, heartbeat timeout, consumer lag가 줄어드는지 확인한다.