SlideShare a Scribd company logo
6
Most read
11
Most read
13
Most read
Apache Kafka e2e latency test
1
2020.12
freepsw
이벤트 발생시 얼마나 빠르게 데이터(1mb image)를 전달 할 수 있을까?
(REST API, Socket 통신보다 많이 느릴까?)
2
Kafka Latency Test 목표
AI(ML, DL)모델 서버에 실시간으로 영상/이미지(Drone, CCTV 등)을 빠르게 전달하는 용도로
Apache Kafka를 적용하는 것이 latency 측면에서 적절한지 검토
https://www.confluent.io/blog/optimizing-apache-kafka-deployment/
이번 테스트에서는 2가지 목표를 달성하기 위한 환경을 구성한다.
Latency 최소화에 집중 !
이미지 데이터 전송
(message size 1.3MB)
3
우리가 원하는 Apache Kafka의 역할은?
큰 용량의 이미지를 전달하면서, 가능한 빠르게(Low Latency) 전달
큰 용량의 이미지를 전달하려면? 빠르게(low latency) 전달하려면?
• Producer/Broker/Topic/Consumer가 한번에 많은 데이터 처리
• 하나의 message size가 큼 (1MB 이상)
• Socket Send/Receive Buffer 조정 à 많은 양을 더 빨리 전달
• Socket buffer가 부족하면,
• Kernel에서 데이터 전달을 지연시키거나,
• TCP에서 MTU(최대 전달 사이즈)를 줄여서, 전송이 늦어짐
• Producer : 기다림 없이 빨리 Broker로 전달
• Consumer : Broker에 저장된 즉시 데이터 수신
Send/Receive buffer size 최대화 Latency 최소화
4
요구하는 환경을 위한 Apache Kafka 설정은?
Latency는 producer/broker/consumer 전 과정에 영향
큰 사이즈의 이미지 전송을 위한 설정 Latency 최소화를 위한 설정
• Producer
• max.request.size=15000000(15Mb, 1개 메세지 최대 크기)
• send_buffer_bytes : 소켓 버퍼를 늘려서 NW 지연 방지
• Broker
• max.message.bytes=15000000
• Topic (Topic별 설정 필요함)
• max.message.bytes=15000000
• Consumer
• max.partition.fetch.bytes= 15000000
• Producer
• Linger.ms : 0 (기다리지 않고 가능한 빨리 전송)
• Consumer
• fetch.max.wait.ms : 0
• Broker에 데이터가 도착하면,
• 바로 consumer의 fetch request로 응답
5
[백업] 사용한 라이브러리의 기본(default) 설정 값 비교
아래 설정 값을 조정하면서 테스트를 진행하였으나, 성능개선 효과가 크지 않았음.
(라이브러리 자체의 성능을 넘어서지 못하는 것인지, 다른 옵션을 더 봐야하는지 확인이 필요함)
6
테스트 환경을 구성하자
Kafka의 최소 단위(partition 1개) 성능을 측정하기 위해 1대의 broker로 구성
• Socket/REST 방식이 중간에 거치는 과정이 없음
• Kafka의 경우 broker를 통해 2번의 통신 과정이 발생(latency 지연)
• Hardware
• GCP(asia-northeast3-a) : CentOS 7
• CPU : 8 cpus
• MEM : 32 GB
• DISK : pd-standard type (50G)
• hostname : kafka-test
• Software
• Apache Kafka (2.13-2.7.0)
• Python Library : kafka-python(v2.0.2), confluent-kafka(v1.5.0)
• Scala Library : kakfka client lib (org.apache.kafka.clients.*)
• JDK : 1.8.0
• Kafka
• Partition : 1
• Replica : 1
• Topic name : latency-test
• 총 20회의 메세지 전달
• Message Size : 1.3 mb (jpg)
테스트 환경 테스트 스펙
Kafka Cluster
Broker 1
Producer
Python-kafka
Python-confluent
Java-kafka
Consumer
Python-kafka
Python-confluent
Java-kafka
REST Client REST Server
Socket Client Socket Server
End to End Latency
7
[테스트 결과 - All] 특정 library를 제외하고는 0.5초 이내
Python-kafka 설정(producer/consumer)를 조정해 봤으나, latency가 줄지 않음.
Python-kafka의 성능이 너무 낮음
Seconds
8
[테스트 결과 – Top4] Socket/Rest가 역시 가장 빠르다.
Kakfa-confluent는 broker를 통해서 전달됨에도 성능이 나름 빠르게 나온다.
제일 처음 연결될 때 가장 latency가 높고,
이후 부터는 빠르게 줄어든다
Seconds
9
[테스트 결과 – Top4] 초기 연결을 제외한 평균 latency
첫번째 연결 시 latency를 제외하면, kafka-confluent 평균 latency가 조금 더 낮아짐
REST API 대비 2배 정도 느림
(0.003초 느림)
Seconds
10
Kafka library의 어느 구간에서 속도가 느리게 나올까?
Java E2E Latency
Producer latency
Consumer latency
Seconds
Kafka-confluent Latency
전체 기준으로 보면, producer의 latency를 줄이는 것이 중요하다.
(하지만, kafka-confluent의 성능을 개선하려면 consumer의 latency를 더 낮추기 위한 고민이 필요)
Producer 구간의 latency가 낮아지면서,
전체 latency가 개선됨
11
테스트 결과 정리
Kafka를 사용하는 것이 Socket/REST API 보다는 느리지만,
6ms 정도의 낮은 latency를 보장함
1mb 이상의 메세지 전송 낮은 latency 보장
[ 고려사항 ]
• 네트워크 대역폭 확보를 통한 대용량 메세지 전달 가능
한 환경 구성 필요
• Async 전송(Producer)을 위해서 socket buffer의 크기
증가 필요 (send_buffer_bytes)
• 너무 작으면 broker에 전달 되지 못하고 유실되는
현상
[ 고려사항 ]
• 너무 낮은 latency를 위한 설정은 전체 throughput이 감
소하는 현상 유발
• 비즈니스 목적에 따라 latency의 최대 허용 가능한 수준
을 정하고, 이에 맞는 설정이 필요
12
테스트에 사용한 코드들
https://github.com/freepsw/kafka-latency-test.git
13
END

More Related Content

What's hot (20)

PDF
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
Open Source Consulting
 
PPTX
Apache Kafka Best Practices
DataWorks Summit/Hadoop Summit
 
PDF
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon Web Services Korea
 
PDF
[232] 성능어디까지쥐어짜봤니 송태웅
NAVER D2
 
PDF
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
Jo Hoon
 
PDF
Hardening Kafka Replication
confluent
 
PDF
噛み砕いてKafka Streams #kafkajp
Yahoo!デベロッパーネットワーク
 
PDF
Elastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 Seoul
SeungYong Oh
 
PDF
Scalable webservice
DaeMyung Kang
 
PDF
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
Amazon Web Services Korea
 
PDF
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...
Amazon Web Services Korea
 
PPTX
Kafka presentation
Mohammed Fazuluddin
 
PPTX
Monitoring Apache Kafka
confluent
 
PDF
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
Ji-Woong Choi
 
PPTX
Airflow를 이용한 데이터 Workflow 관리
YoungHeon (Roy) Kim
 
PDF
Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...
confluent
 
PPTX
Apache kafka 확장과 응용
JANGWONSEO4
 
PDF
AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017
Amazon Web Services Korea
 
PDF
Amazon DynamoDB 키 디자인 패턴
Amazon Web Services Korea
 
PDF
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
Amazon Web Services Korea
 
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
Open Source Consulting
 
Apache Kafka Best Practices
DataWorks Summit/Hadoop Summit
 
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon Web Services Korea
 
[232] 성능어디까지쥐어짜봤니 송태웅
NAVER D2
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
Jo Hoon
 
Hardening Kafka Replication
confluent
 
噛み砕いてKafka Streams #kafkajp
Yahoo!デベロッパーネットワーク
 
Elastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 Seoul
SeungYong Oh
 
Scalable webservice
DaeMyung Kang
 
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
Amazon Web Services Korea
 
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...
Amazon Web Services Korea
 
Kafka presentation
Mohammed Fazuluddin
 
Monitoring Apache Kafka
confluent
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
Ji-Woong Choi
 
Airflow를 이용한 데이터 Workflow 관리
YoungHeon (Roy) Kim
 
Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...
confluent
 
Apache kafka 확장과 응용
JANGWONSEO4
 
AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017
Amazon Web Services Korea
 
Amazon DynamoDB 키 디자인 패턴
Amazon Web Services Korea
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
Amazon Web Services Korea
 

Similar to Apache kafka performance(latency)_benchmark_v0.3 (7)

PDF
[ 2021 AI + X 여름 캠프 ] 2. 장비 상호 연결 kafka를 이용한 매체 전송
ChoiYura
 
PDF
Data in Motion을 위한 이벤트 기반 마이크로서비스 아키텍처 소개
confluent
 
PDF
KAFKA 3.1.0.pdf
wonyong hwang
 
PDF
인프라 벤치마크 테스트 잘 해보기 윤서율.pdf
SeoyulYoon
 
PDF
웹서버 부하테스트 실전 노하우
IMQA
 
PPTX
Streaming platform Kafka in SK planet
Byeongsu Kang
 
PDF
초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기
ksdc2019
 
[ 2021 AI + X 여름 캠프 ] 2. 장비 상호 연결 kafka를 이용한 매체 전송
ChoiYura
 
Data in Motion을 위한 이벤트 기반 마이크로서비스 아키텍처 소개
confluent
 
KAFKA 3.1.0.pdf
wonyong hwang
 
인프라 벤치마크 테스트 잘 해보기 윤서율.pdf
SeoyulYoon
 
웹서버 부하테스트 실전 노하우
IMQA
 
Streaming platform Kafka in SK planet
Byeongsu Kang
 
초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기
ksdc2019
 
Ad

More from SANG WON PARK (15)

PDF
Trends_of_MLOps_tech_in_business
SANG WON PARK
 
PDF
Cloud DW technology trends and considerations for enterprises to apply snowflake
SANG WON PARK
 
PDF
The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)
SANG WON PARK
 
PDF
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )
SANG WON PARK
 
PDF
Optane DC Persistent Memory(DCPMM) 성능 테스트
SANG WON PARK
 
PDF
boosting 기법 이해 (bagging vs boosting)
SANG WON PARK
 
PDF
Machine Learning Foundations (a case study approach) 강의 정리
SANG WON PARK
 
PDF
Coursera Machine Learning (by Andrew Ng)_강의정리
SANG WON PARK
 
PDF
내가 이해하는 SVM(왜, 어떻게를 중심으로)
SANG WON PARK
 
PDF
코드로 이해하는 Back_propagation(cs231n)
SANG WON PARK
 
PDF
Rancher Simple User Guide
SANG WON PARK
 
PDF
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
SANG WON PARK
 
PDF
Reinforcement learning v0.5
SANG WON PARK
 
PDF
Code로 이해하는 RNN
SANG WON PARK
 
PDF
Hadoop eco story 이해
SANG WON PARK
 
Trends_of_MLOps_tech_in_business
SANG WON PARK
 
Cloud DW technology trends and considerations for enterprises to apply snowflake
SANG WON PARK
 
The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)
SANG WON PARK
 
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )
SANG WON PARK
 
Optane DC Persistent Memory(DCPMM) 성능 테스트
SANG WON PARK
 
boosting 기법 이해 (bagging vs boosting)
SANG WON PARK
 
Machine Learning Foundations (a case study approach) 강의 정리
SANG WON PARK
 
Coursera Machine Learning (by Andrew Ng)_강의정리
SANG WON PARK
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
SANG WON PARK
 
코드로 이해하는 Back_propagation(cs231n)
SANG WON PARK
 
Rancher Simple User Guide
SANG WON PARK
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
SANG WON PARK
 
Reinforcement learning v0.5
SANG WON PARK
 
Code로 이해하는 RNN
SANG WON PARK
 
Hadoop eco story 이해
SANG WON PARK
 
Ad

Apache kafka performance(latency)_benchmark_v0.3

  • 1. Apache Kafka e2e latency test 1 2020.12 freepsw 이벤트 발생시 얼마나 빠르게 데이터(1mb image)를 전달 할 수 있을까? (REST API, Socket 통신보다 많이 느릴까?)
  • 2. 2 Kafka Latency Test 목표 AI(ML, DL)모델 서버에 실시간으로 영상/이미지(Drone, CCTV 등)을 빠르게 전달하는 용도로 Apache Kafka를 적용하는 것이 latency 측면에서 적절한지 검토 https://www.confluent.io/blog/optimizing-apache-kafka-deployment/ 이번 테스트에서는 2가지 목표를 달성하기 위한 환경을 구성한다. Latency 최소화에 집중 ! 이미지 데이터 전송 (message size 1.3MB)
  • 3. 3 우리가 원하는 Apache Kafka의 역할은? 큰 용량의 이미지를 전달하면서, 가능한 빠르게(Low Latency) 전달 큰 용량의 이미지를 전달하려면? 빠르게(low latency) 전달하려면? • Producer/Broker/Topic/Consumer가 한번에 많은 데이터 처리 • 하나의 message size가 큼 (1MB 이상) • Socket Send/Receive Buffer 조정 à 많은 양을 더 빨리 전달 • Socket buffer가 부족하면, • Kernel에서 데이터 전달을 지연시키거나, • TCP에서 MTU(최대 전달 사이즈)를 줄여서, 전송이 늦어짐 • Producer : 기다림 없이 빨리 Broker로 전달 • Consumer : Broker에 저장된 즉시 데이터 수신 Send/Receive buffer size 최대화 Latency 최소화
  • 4. 4 요구하는 환경을 위한 Apache Kafka 설정은? Latency는 producer/broker/consumer 전 과정에 영향 큰 사이즈의 이미지 전송을 위한 설정 Latency 최소화를 위한 설정 • Producer • max.request.size=15000000(15Mb, 1개 메세지 최대 크기) • send_buffer_bytes : 소켓 버퍼를 늘려서 NW 지연 방지 • Broker • max.message.bytes=15000000 • Topic (Topic별 설정 필요함) • max.message.bytes=15000000 • Consumer • max.partition.fetch.bytes= 15000000 • Producer • Linger.ms : 0 (기다리지 않고 가능한 빨리 전송) • Consumer • fetch.max.wait.ms : 0 • Broker에 데이터가 도착하면, • 바로 consumer의 fetch request로 응답
  • 5. 5 [백업] 사용한 라이브러리의 기본(default) 설정 값 비교 아래 설정 값을 조정하면서 테스트를 진행하였으나, 성능개선 효과가 크지 않았음. (라이브러리 자체의 성능을 넘어서지 못하는 것인지, 다른 옵션을 더 봐야하는지 확인이 필요함)
  • 6. 6 테스트 환경을 구성하자 Kafka의 최소 단위(partition 1개) 성능을 측정하기 위해 1대의 broker로 구성 • Socket/REST 방식이 중간에 거치는 과정이 없음 • Kafka의 경우 broker를 통해 2번의 통신 과정이 발생(latency 지연) • Hardware • GCP(asia-northeast3-a) : CentOS 7 • CPU : 8 cpus • MEM : 32 GB • DISK : pd-standard type (50G) • hostname : kafka-test • Software • Apache Kafka (2.13-2.7.0) • Python Library : kafka-python(v2.0.2), confluent-kafka(v1.5.0) • Scala Library : kakfka client lib (org.apache.kafka.clients.*) • JDK : 1.8.0 • Kafka • Partition : 1 • Replica : 1 • Topic name : latency-test • 총 20회의 메세지 전달 • Message Size : 1.3 mb (jpg) 테스트 환경 테스트 스펙 Kafka Cluster Broker 1 Producer Python-kafka Python-confluent Java-kafka Consumer Python-kafka Python-confluent Java-kafka REST Client REST Server Socket Client Socket Server End to End Latency
  • 7. 7 [테스트 결과 - All] 특정 library를 제외하고는 0.5초 이내 Python-kafka 설정(producer/consumer)를 조정해 봤으나, latency가 줄지 않음. Python-kafka의 성능이 너무 낮음 Seconds
  • 8. 8 [테스트 결과 – Top4] Socket/Rest가 역시 가장 빠르다. Kakfa-confluent는 broker를 통해서 전달됨에도 성능이 나름 빠르게 나온다. 제일 처음 연결될 때 가장 latency가 높고, 이후 부터는 빠르게 줄어든다 Seconds
  • 9. 9 [테스트 결과 – Top4] 초기 연결을 제외한 평균 latency 첫번째 연결 시 latency를 제외하면, kafka-confluent 평균 latency가 조금 더 낮아짐 REST API 대비 2배 정도 느림 (0.003초 느림) Seconds
  • 10. 10 Kafka library의 어느 구간에서 속도가 느리게 나올까? Java E2E Latency Producer latency Consumer latency Seconds Kafka-confluent Latency 전체 기준으로 보면, producer의 latency를 줄이는 것이 중요하다. (하지만, kafka-confluent의 성능을 개선하려면 consumer의 latency를 더 낮추기 위한 고민이 필요) Producer 구간의 latency가 낮아지면서, 전체 latency가 개선됨
  • 11. 11 테스트 결과 정리 Kafka를 사용하는 것이 Socket/REST API 보다는 느리지만, 6ms 정도의 낮은 latency를 보장함 1mb 이상의 메세지 전송 낮은 latency 보장 [ 고려사항 ] • 네트워크 대역폭 확보를 통한 대용량 메세지 전달 가능 한 환경 구성 필요 • Async 전송(Producer)을 위해서 socket buffer의 크기 증가 필요 (send_buffer_bytes) • 너무 작으면 broker에 전달 되지 못하고 유실되는 현상 [ 고려사항 ] • 너무 낮은 latency를 위한 설정은 전체 throughput이 감 소하는 현상 유발 • 비즈니스 목적에 따라 latency의 최대 허용 가능한 수준 을 정하고, 이에 맞는 설정이 필요