Inflearn brand logo image

인프런 커뮤니티 질문&답변

강토토님의 프로필 이미지
강토토

작성한 질문수

실전에서 바로 써먹는 Kafka 입문

Kafka timeout 설정

작성

·

59

0

안녕하세요.

보통 RestTemplate, WebClient, FeignClient 등으로 외부 요청 등을 시도할 경우에는 timeout 설정을 중요하게 생각하는데, 카프카에서는 Connection Timeout, Read Timeout 등과 같은 셋팅 값을 몇 초로 설정해야할까요? 그리고 몇 초에 해당하는 값을 정하는 기준이 어떻게 될까요?

답변 2

0

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 ! 질문 잘해주셨어요 !

질문해주신 내용에 대해 답변드려볼게요 ~

 

우선 Kafka에서는 상황에 따라 다양한 timeout 설정이 있지만

대표적으로는 아래 3가지가 실무에서 자주 사용돼요~

request.timeout.ms는 클라이언트가 요청을 보낸 후

응답까지 기다리는 최대 시간으로 권장 기본값은 30초에요 !

delivery.timeout.ms는 프로듀서가 메시지를 보내기까지 걸리는

최대 시간 (retries 포함)으로 권장 기본 값은 2분이에요 !

max.block.ms는 프로듀서의 send() 호출 시,

버퍼가 가득 찼거나 metadata를 기다릴 때의 최대 대기 시간으로 권장 기본 값은 1분이에요 !

 

그리고 실무에서 timeout 설정은 아래와 같은 기준들을 고려해서 결정해요 ~

[1] 시스템의 응답 SLA

예시) “1초 내에 응답해야 한다”면 request.timeout.ms를 1000~3000ms 정도 !

[2]재시도 횟수(retries)와의 조합

delivery.timeout.ms는 retries가 많을수록 길게 설정하는 편이 안정적이에요 !

예시) 5초 * 3회 retry → 최소 15,000ms 필요

간단히 요약하자면, Kafka에서 timeout 값은 시스템의 SLA, 재시도 설정,

네트워크 특성을 고려해서 보통 5초 ~ 30초 사이로 설정하는 것이 일반적이에요 !

그리고 "실제 운영 환경에서 모니터링하면서 조정"을 해요 :)

 

또 궁금한 점 생기시면 편하게 질문 주세요~!

0

안녕하세요, 인프런 AI 인턴입니다. 강토토님.

Kafka에서는 RestTemplate이나 WebClient, FeignClient와 같은 외부 요청 처리와는 조금 다르게, 기본적으로 데이터 전송의 신뢰성과 연속성이 중요시되며, 이로 인해 타임아웃 설정이 약간 다르게 적용됩니다.

Kafka 타임아웃 설정

  1. Connection Timeout: Kafka에서는 클라이언트와 브로커 간의 연결을 설정할 때, socket.connection.timeout.ms와 같은 파라미터를 통해 설정할 수 있습니다. 기본적으로는 30초로 설정되며, 네트워크 조건에 따라 조정할 수 있습니다.

  2. Read Timeout: 소비자(consumer)가 데이터를 읽을 때, fetch.max.wait.ms 옵션을 사용하여 타임아웃을 설정합니다. Kafka는 데이터를 비동기적으로 수신하므로, 타임아웃 시간이 너무 짧으면 데이터 수신 실패가 발생할 수 있습니다.

  3. Request Timeout: request.timeout.ms는 브로커가 요청을 처리하는 데까지 걸리는 최대 시간을 설정합니다. 처리 과정에서 복제(replication) 지연이나 네트워크 대기 시간을 고려해야 하므로, 적정 수준에서 설정해야 합니다.

설정 기준

  • 네트워크 환경: 로컬 네트워크 및 클라우드 환경 등에서의 네트워크 대기 시간을 고려하여 대역폭과 안정성을 기준으로 설정합니다.
  • 데이터 중요도: 중요한 데이터를 처리할 경우 타임아웃 제한을 다소 여유있게 설정해 신뢰성을 높입니다.
  • 로드 시험: 부하 테스트를 통해 실제 처리가 얼마나 걸리는지 측정한 후 설정값을 조정하는 것이 좋습니다.

관련 Kafka 타임아웃 설정에 대한 더 나은 이해를 원하신다면, 다음의 유사한 질문 및 답변을 참고하실 수 있습니다:
- Kafka consumer 및 producer 설정 가이드

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

강토토님의 프로필 이미지
강토토

작성한 질문수

질문하기