티스토리 뷰
kafka version 2.11 - 카프카 성능 테스트 정리
- Kafka 에서 제공하는 테스트용 스크립트 이용
- path : kafka/bin
- 위 스크립트를 옵션 없이 실행 시 아래와 같이 사용법 및 옵션 확인 가능 테스트용 토픽을 생성해서 테스트 진행
default 설정으로 사용시 최대 전송 가능한 record-size = 1MB (1048588 bytes)
1MB 이상 전송 시 카프카 설정 수정 후 재시작
server.properties → message.max.bytes
producer.properties → max.request.size
consumer.properties → max.partition.fetch.bytes
topic
- max.message.bytes
- retention.ms
→ 테스트로 사용하므로 300000ms -> 5분으로 설정해서 사용
→ default = 604800000ms → 7일 이므로 반복적인 테스트 시 용량 이슈 발생할 수 있음
서버 사양
- 장비스펙
- CPU : 16 Core (2.1Ghz 8 Core * 2)
- Mem : 252G
- Disk : 439G (개발)
- DISK I/O 평균 4MB/M
준비사항
- 테스트용 토픽 생성
- kafka-manager 에서 생성 또는 명령어로 생성
- topic
- perf-topic
- perf-topic-1 (partition 1)
- perf-topic-3 (partition 3)
- perf-topic-8 (partition 8)
- replication factor : 1
- retention.ms : 300000 (5분)
- max.message.bytes:= 20485760 (20MB)
#토픽생성 /usr/local/kafka/bin/kafka-topics.sh --create --zookeeper {zookeeper ip:port} --replication-factor 1 --partitions 1 --topic testTopic #토픽 리스트 확인 /usr/local/kafka/bin/kafka-topics.sh --list --zookeeper {zookeeper ip:port} #토픽 설정 변경 /usr/local/kafka/bin/kafka-configs.sh --zookeeper {zookeeper ip:port} --entity-type topics --entity-name perf-topic --alter --add-config max.message.bytes=20485760
용어 설명
- throughput
- 초당 record 처리 수
- -1 옵션인 경우 카프카에 최대 처리량으로 적용
Producer Test
- kafka/bin/kafka-producer-perf-test.sh
- throughput = -1 로 설정 시 Kafka 로 전송가능한 최대 메시지 수로 전송
- producer.properties 설정은 producer.config 옵셥으로 주입 (1MB 이상 등 default 설정이 아닌 경우 테스트 옵션에 맞게 변경된 설정을 주입해야함)
- record-size : 레코드 사이즈(byte)
- 1MB = 1,000,000
- 10MB =10,000,000
- 15MB = 15,000,000
- 20MB = 20,000,000
- num-records : 생성할 메시지 수
- throughput : 최대 메시지 처리량 (초당)
- default = -1 (카프카가 처리가능한 최대 메시지로 전송)
실행 결과
/usr/local/kafka/bin/kafka-producer-perf-test.sh \
--topic perf-topic-1 \
--record-size 50000 \
--num-records 40000 \
--producer-props \
bootstrap.servers={kafka ip:port} \
--producer.config /usr/local/kafka/config/producer.properties \
--throughput -1
1000 records sent, 220.507166 records/sec (210.29 MB/sec), 139.82 ms avg latency, 320.00 ms max latency, 139 ms 50th, 170 ms 95th, 180 ms 99th, 320 ms 99.9th.
Consumer Test
- messages : 소비할 메시지 개수
- reporting-interval : 리포팅 간격
실행 결과
/usr/local/kafka/bin/kafka-consumer-perf-test.sh \
--topic perf-topic-1 \
--show-detailed-stats \
--group perf-group \
--broker-list {kafka server ip:port} \
--reporting-interval 1000 \
--messages 1000000
결과
- 카프카 임계치 측정을 위해 thoughput 을 -1, 100, 1000, 10000 으로 설정하여 테스트한 결과
- 카프카가 처리 가능한 최대 처리량으로 처리됨 ⇒ 최대처리량은 -1 옵션으로 설정해서 나오는 값이며, record-size=1MB 기준 200MB/sec
- record-size = 1MB 기준 카프카는 200MB/sec 처리하며 record-size 가 증가함에 따라 처리량은 감소
- Producer 개수 증가에 따라 초당 처리량(MB/sec)은 감소하나, N개의 프로듀서가 처리하는 전체 처리량은 증가
'Programming > Open Source' 카테고리의 다른 글
[Kafka] Offset (0) | 2021.05.15 |
---|---|
[Kafka] Partition 추가 시 고려사항 (0) | 2021.05.15 |
[Kafka] Kafka 구성 시 하드웨어 사양 참고 (0) | 2021.05.15 |
[Open Source] json-server (0) | 2021.05.15 |
JavaScript checkbox 선택 확인 (5) | 2017.04.18 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 카프카
- 미사맛집
- PreparedStatement
- db
- 초대장
- 서울카페
- 도커
- spring
- docker
- keycloak
- 문자열
- jenkins
- ArrayList
- Java
- 알고리즘
- kafka
- JDBC
- 송리단길맛집
- scouter
- 자바
- 티스토리초대장
- mysql
- Array
- 자료구조
- string
- 잠실맛집
- Database
- 리스트
- elastic stack
- Algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함