본문 바로가기
kafka/core

Producer의 메시지 배치 전송 내부 메커니즘 - linger.ms와 batch.size

by 개복이 2025. 4. 30.

Producer의 메시지 배치 전송 내부 메커니즘 - linger.ms와 batch.size

  • Sender Thread는 기본적으로 전송할 준비가 되어 있으면 Record Accumulator에서 1개의 Batch를 가져갈수도, 여러 개의 Batch를 가져갈 수도 있다.
  • linger.ms를 0보다 크게 설정하여 Sender Thread가 하나의 Record Batch를 가져갈 때 일정 시간 대기하여 Record Batch에 메시지를 보다 많이 채울 수 있도록 적용
  • max.inflight.requests.per.connection=2이면 Batch를 총 2개까지 가져올 수 있다.

 

Producer의 메시지 배치 전송 내부 메커니즘 - linger.ms와 batch.size 동작 메커니즘 #1

 

Producer의 메시지 배치 전송 내부 메커니즘 - linger.ms와 batch.size 동작 메커니즘 #2

 

Producer의 linger.ms 고찰

  • linger.ms를 반드시 0보다 크게 설정할 필요는 없다.
  • Producer와 Broker간의 전송이 매우 빠르고 Producer에서 메시지를 적절한 Record Accumulator에 누적된다면 linger.ms가 0이 되어도 무방
  • 전반적인 Producer와 Broker간의 전송이 느리다면 linger.ms를 높여서 메시지가 배치로 적용될 수 있는 확률을 높이는 시도를 해볼만 하다.
  • linger.ms는 보통 20ms 이하로 설정할 것을 권장한다.

댓글