나누고 싶은 개발 이야기

Data Engineer로서 기록하고 공유하고 싶은 기술들. 책과 함께 이야기합니다.

Big Data/Kafka

[kafka] kafka-producer-perf-test

devidea 2020. 12. 18. 11:43

오랜만에 글을 작성한다. 그래서 간단한 내용을 하나 소개한다. 

테스트를 위해서 카프카에 임의의 트래픽을 발생할 수 있는데 kafka-producer-perf-test.sh command를 사용하면 된다. 이것을 살펴보자.

 

kafka-producer-perf-test.sh을 파라미터 없이 실행하면 옵션 항목을 볼 수 있다.

주요한 옵션만 살펴보자.

파라미터 설명
--topoic 데이터를 보낼 토픽
--num-records 전송할 메세지의 개수
--throughput 대략적인 messages/sec으로 처리량을 조절한다.
-1을 설정할 경우 처리량 조정없이 계속 보낸다.
--producer-props 프로듀서 설정.
필수 설정인 bootstrap.servers 등을 넣을 수 있다.
--record-size 메세지의 사이즈 (bytes)
--print-metric 테스트 종료 후 metric을 보여준다.

위 옵션을 토대로 다음과 같이 트래픽을 조정해서 발송했다.

 

메세지 숫자는 500개 처리량을 10개로 주어서 초당 10개만 발송한다. 그리고 메세지 사이즈는 1024byte 이다.

./kafka-producer-perf-test.sh --num-records 500 --throughput 10 --record-size 1024 \
--print-metric --topic test --producer-props bootstrap.servers=localhost:9092

 

 

실행하면 중간에 다음과 같이 처리된 양을 대략적으로 표시해준다.

52 records sent, 10.3 records/sec (0.01 MB/sec), 6.5 ms avg latency, 201.0 ms max latency.
50 records sent, 9.9 records/sec (0.01 MB/sec), 2.3 ms avg latency, 5.0 ms max latency.
51 records sent, 10.1 records/sec (0.01 MB/sec), 2.1 ms avg latency, 3.0 ms max latency.
51 records sent, 10.1 records/sec (0.01 MB/sec), 1.9 ms avg latency, 3.0 ms max latency.
50 records sent, 9.9 records/sec (0.01 MB/sec), 2.0 ms avg latency, 3.0 ms max latency.
50 records sent, 9.9 records/sec (0.01 MB/sec), 1.8 ms avg latency, 3.0 ms max latency.
51 records sent, 10.1 records/sec (0.01 MB/sec), 1.9 ms avg latency, 3.0 ms max latency.
50 records sent, 9.9 records/sec (0.01 MB/sec), 1.8 ms avg latency, 3.0 ms max latency.
51 records sent, 10.1 records/sec (0.01 MB/sec), 1.7 ms avg latency, 2.0 ms max latency.
500 records sent, 10.006604 records/sec (0.01 MB/sec), 2.40 ms avg latency, 201.00 ms max latency, 2 ms 50th, 3 ms 95th, 4 ms 99th, 201 ms 99.9th.

 

몇 건의 메세지를 보냈는지 그리고 보냈을 때의 처리량이 얼마인지 대략적으로 확인할 수 있다.

임의의 데이터를 보내는 방식으로 하기 때문에 특정 포맷의 메세지는 보낼 수 없지만 순수하게 카프카의 처리량을 테스트할 때 유용할 듯 하다.

 

반응형