카프카 throughput

SuYeong·2024년 12월 18일
1

안녕하세요.

카프카 파티션 갯수를 산정하며 카프카 파티션의 throughput에 대해 알아본 내용을 공유드립니다.

Kafka 단일 파티션의 throughput(처리량)은 여러 요소에 따라 달라지기 때문에 정확한 수치는 알기 어렵습니다.
보통의 경우, 수 MB/s에서 수십 MB/s 수준으로 예상 가능합니다.

Throughput에 영향을 미치는 주된 요인

1) 메시지 크기

메시지가 클수록 처리량이 높아질 가능성 있음.
예: 1MB 메시지 → 초당 10,000개의 메시지를 처리하면 10GB/s 가능.
반면, 메시지 크기가 작을수록 오버헤드가 증가하여 처리량이 낮아질 수 있음.

2) 브로커와 디스크 성능

디스크 I/O: Kafka는 주로 파일 시스템 기반으로 데이터를 처리하므로, 디스크 성능(특히 SSD 사용 여부)이 중요.
HDD: 수 MB/s.
SSD: 수십 MB/s.
브로커 자원: 브로커의 CPU와 메모리 리소스가 충분한지 여부도 중요.

3) 네트워크 대역폭

Kafka 클러스터의 네트워크 대역폭 제한:
1Gbps 네트워크: 최대 125MB/s.
10Gbps 네트워크: 최대 1.25GB/s.
단일 파티션은 네트워크 대역폭의 영향을 받음.

4) Producer와 Consumer 구성

배치 전송(batch): Producer가 데이터를 배치로 묶어 전송하면 처리량이 증가.
작은 배치 크기: 오버헤드 증가 → 처리량 감소.
큰 배치 크기: 네트워크 효율 상승 → 처리량 증가.
압축 사용: gzip, snappy, lz4 등 압축을 적용하면 전송량을 줄여 처리량 증가 가능.

5) 메시지 처리량 조정

linger.ms (배치 대기 시간)와 batch.size 설정에 따라 Producer가 메시지를 효율적으로 묶어서 전송 가능.
Consumer의 병렬 처리 수준이 낮으면 처리량이 제한될 수 있음.

6) 데이터 유지 기간

데이터를 오래 저장할수록 디스크 부하가 증가하여 처리량에 영향을 줄 수 있음.

일반적인 단일 파티션 처리량

HDD 기반 Kafka 클러스터:

Throughput: 5~10MB/s 정도 가능.

SSD 기반 Kafka 클러스터:

Throughput: 50~100MB/s 이상 가능.

네트워크와 디스크 성능 최적화:

단일 파티션에서 최대 200MB/s 이상 도달 가능.

단일 파티션 Throughput 최적화 방법

1) 배치 크기 조정:

batch.size를 적절히 설정 (100KB~1MB 추천).
linger.ms를 늘려 메시지를 배치로 묶어서 전송.

2) 압축 사용:

snappy나 lz4 압축 사용으로 네트워크 전송량 감소.
네트워크 업그레이드:

3) 10Gbps 이상의 네트워크를 구성하여 병목 최소화.

4) 디스크 성능 강화:

브로커가 SSD를 사용하도록 구성.

파티션 수 늘리기:

단일 파티션으로 처리량이 부족하면 파티션 수를 늘려 병렬 처리.

참고 값

기본 환경에서 예상되는 처리량:
환경 Throughput (단일 파티션)
HDD, 1Gbps 네트워크 5~10MB/s
SSD, 1Gbps 네트워크 10~50MB/s
SSD, 10Gbps 네트워크 50~200MB/s

감사합니다.

profile
안녕하세요

2개의 댓글

comment-user-thumbnail
2024년 12월 24일

좋은 정보 감사합니다.

답글 달기
comment-user-thumbnail
2025년 1월 16일

프란츠 카프카 이름에서 따온 건가요!!!

답글 달기