← 학습 카테고리

Learn

Kafka

84개 모듈 · 현재 83번째

Kafka 모듈 83/84 kafka-learn-83

num.replica.fetchers — 복제 전용 스레드 풀의 크기

Kafka num.replica.fetchers 및 Kafka Streams state.dir 공식 문서·기술 블로그 종합 (웹 리서치, 2026) — Apache Kafka 공식문서(Broker Configs), Confluent 기술 블로그(RocksDB 성능 튜닝) Apache Kafka 공식문서 Broker Configs

이 모듈을 다 읽으면

  • num.replica.fetchers가 kafka-learn-10의 네트워크·IO 스레드와 별개의, 복제 전용 스레드 풀이라는 것을 설명할 수 있다
  • 이 값을 올릴 때의 이득과 대가를 설명할 수 있다

kafka-learn-10에서 다룬 브로커의 acceptor→네트워크 스레드→IO 스레드 파이프라인(클라이언트 요청 처리용)을 전제로, 그와 별개로 팔로워가 리더로부터 데이터를 복제해오는 전용 스레드 풀을 정리한다.

클라이언트 요청 스레드와는 다른 별개의 풀

kafka-learn-10에서 다룬 네트워크·IO 스레드는 프로듀서·컨슈머 같은 클라이언트의 Produce/Fetch/Metadata 요청을 처리하는 스레드 풀이다. num.replica.fetchers는 이와 완전히 별개다 — 팔로워 브로커가 리더 브로커로부터 데이터를 복제해오는 데 전용으로 쓰이는 fetcher 스레드의 개수를 지정한다. 즉 클라이언트 트래픽 처리와 브로커 간 복제 트래픽 처리가 서로 다른 스레드 풀로 격리돼 있는 구조다.

핵심 포인트

  • kafka-learn-10의 네트워크·IO 스레드: 클라이언트(프로듀서·컨슈머)의 Produce/Fetch/Metadata 요청 처리
  • num.replica.fetchers: 팔로워가 리더로부터 데이터를 복제해오는 전용 fetcher 스레드 개수 — 클라이언트 요청 처리와 완전히 별개의 풀

값을 올리면 — 복제 처리량은 오르지만 CPU·메모리 비용도 오른다

이 값을 기본값(1)보다 높이면 팔로워·리더 브로커 양쪽에서 I/O 병렬성이 늘어나 복제 처리량(fetcher throughput)이 올라간다 — 파티션 수가 많거나 데이터센터 간 복제(cross-datacenter replication)처럼 복제 부하가 큰 클러스터에서 보통 1에서 4~8 정도로 올리는 게 흔한 튜닝이다. 다만 공짜가 아니다 — 스레드가 늘어난 만큼 CPU와 메모리 사용량도 함께 늘어난다. 그리고 클러스터 전체 fetcher 스레드 총량은 이 값에 브로커 수를 곱한 규모가 되므로, 브로커가 많은 대형 클러스터에서는 이 곱셈 효과도 염두에 둬야 한다.

핵심 포인트

  • 기본값 1보다 올리면 I/O 병렬성↑→복제 처리량↑ — 파티션 많거나 데이터센터 간 복제 부하 큰 클러스터에서 보통 4~8로 튜닝
  • 대가: CPU·메모리 사용량 증가 — 클러스터 전체 fetcher 스레드 총량은 (이 값)×(브로커 수)로 커지므로 대형 클러스터에서는 이 곱셈 효과도 고려해야 함