안녕하세요.
카프카 파티션 갯수를 산정하며 카프카 파티션의 throughput에 대해 알아본 내용을 공유드립니다.
Kafka 단일 파티션의 throughput(처리량)은 여러 요소에 따라 달라지기 때문에 정확한 수치는 알기 어렵습니다.
보통의 경우, 수 MB/s에서 수십 MB/s 수준으로 예상 가능합니다.
메시지가 클수록 처리량이 높아질 가능성 있음.
예: 1MB 메시지 → 초당 10,000개의 메시지를 처리하면 10GB/s 가능.
반면, 메시지 크기가 작을수록 오버헤드가 증가하여 처리량이 낮아질 수 있음.
디스크 I/O: Kafka는 주로 파일 시스템 기반으로 데이터를 처리하므로, 디스크 성능(특히 SSD 사용 여부)이 중요.
HDD: 수 MB/s.
SSD: 수십 MB/s.
브로커 자원: 브로커의 CPU와 메모리 리소스가 충분한지 여부도 중요.
Kafka 클러스터의 네트워크 대역폭 제한:
1Gbps 네트워크: 최대 125MB/s.
10Gbps 네트워크: 최대 1.25GB/s.
단일 파티션은 네트워크 대역폭의 영향을 받음.
배치 전송(batch): Producer가 데이터를 배치로 묶어 전송하면 처리량이 증가.
작은 배치 크기: 오버헤드 증가 → 처리량 감소.
큰 배치 크기: 네트워크 효율 상승 → 처리량 증가.
압축 사용: gzip, snappy, lz4 등 압축을 적용하면 전송량을 줄여 처리량 증가 가능.
linger.ms (배치 대기 시간)와 batch.size 설정에 따라 Producer가 메시지를 효율적으로 묶어서 전송 가능.
Consumer의 병렬 처리 수준이 낮으면 처리량이 제한될 수 있음.
데이터를 오래 저장할수록 디스크 부하가 증가하여 처리량에 영향을 줄 수 있음.
Throughput: 5~10MB/s 정도 가능.
Throughput: 50~100MB/s 이상 가능.
단일 파티션에서 최대 200MB/s 이상 도달 가능.
batch.size를 적절히 설정 (100KB~1MB 추천).
linger.ms를 늘려 메시지를 배치로 묶어서 전송.
snappy나 lz4 압축 사용으로 네트워크 전송량 감소.
네트워크 업그레이드:
브로커가 SSD를 사용하도록 구성.
단일 파티션으로 처리량이 부족하면 파티션 수를 늘려 병렬 처리.
기본 환경에서 예상되는 처리량:
환경 Throughput (단일 파티션)
HDD, 1Gbps 네트워크 5~10MB/s
SSD, 1Gbps 네트워크 10~50MB/s
SSD, 10Gbps 네트워크 50~200MB/s
감사합니다.
좋은 정보 감사합니다.