-
Labs 05 Optimizing Kafka's Performance - 성능 테스트 결과Kafka/Admin 2021. 1. 9. 15:06
앞 포스트에서도 언급한, 강의 실습 중 가장 인상 깊었던 Producer 성능 테스트 관련 기록입니다.
acks=all 를 포기하지 않아도, batch 처리를 통해 성능 향상이 가능함을 알게 됩니다.
환경세팅
git : https://github.com/confluentinc/training-operations-src
기본조건
partition 6, replication-factor 3
num-recoard 1,000,000
record-size 100
throughput 10,000,000confluent training vm - remote access
Producer 성능 테스트 결과
chart
표
- single 일때는 acks=1 과 acks=all 2배 차이가 납니다.
- batch 일때는 acks=1 과 acks=all 이 거의 차이 없습니다.
- acks=all 일때, single vs batch 는 5배 차이가 납니다
5배 차이가 나는 이유는 EOS ( exactly once ) 를 사용하기 위해서는
max.in.flight.requests.per.connection= 5 이하로 설정하라는 Guide 를 염두에 둔 설정인것 같네요
linger.ms : batch 처리를 위해 기다리는 시간 입니다.
batch.size or linger.ms 둘 중 하나가 충족되면 send 합니다.
avg latency : 1건 당 평균 대기 시간입니다.
acks=all 이나 exactly once semantic 을 사용하더라도, batch 와 gzip 압축 등을 통해
속도 향상을 도모 할 수 있습니다.Producer Performance Test Script
#topic 생성 kafka-topics \ --bootstrap-server kafka-1:19092 \ --create \ --topic performance \ --partitions 6 \ --replication-factor 3 # acks 별 성능테스트 ( acks=1 / acks=all 을 바꿔가며 테스트 ) kafka-producer-perf-test \ --topic performance \ --num-records 1000000 \ --record-size 100 \ --throughput 10000000 \ --producer-props \ bootstrap.servers=kafka-1:19092,kafka-2:29092 \ acks=1 # batch 성능 테스트 ( acks=all / batch 를 바꿔가며 테스트 ) kafka-producer-perf-test \ --topic performance \ --num-records 1000000 \ --record-size 100 \ --throughput 10000000 \ --producer-props \ bootstrap.servers=kafka-1:19092,kafka-2:29092 \ acks=all \ batch.size=400000 \ linger.ms=500
Consumer 의 유사 Config
- consumer batch 테스트 결과는 생략하지만, 유사하게 설정 할 수 있는 값입니다.
producer consumer batch.size fetch.min.bytes
(default 1 )linger.ms fetch.max.wait.ms
(default : 500 ms )'Kafka > Admin' 카테고리의 다른 글
Confluent Platform + Kafka setup 관련 links (0) 2021.01.27 Confluent Platform 6.0.1 Local PC 세팅 (0) 2021.01.17 Apache Kafka® Administration by Confluent 교육 (0) 2021.01.09