SlideShare a Scribd company logo
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

Apache Kafka Best Practices
Apache Kafka Best PracticesApache Kafka Best Practices
Apache Kafka Best Practices
DataWorks Summit/Hadoop Summit
 
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
Hyunmin Lee
 
Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?
confluent
 
Introduction to Kafka Cruise Control
Introduction to Kafka Cruise ControlIntroduction to Kafka Cruise Control
Introduction to Kafka Cruise Control
Jiangjie Qin
 
Stephan Ewen - Experiences running Flink at Very Large Scale
Stephan Ewen -  Experiences running Flink at Very Large ScaleStephan Ewen -  Experiences running Flink at Very Large Scale
Stephan Ewen - Experiences running Flink at Very Large Scale
Ververica
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Yongho Ha
 
Stream processing using Kafka
Stream processing using KafkaStream processing using Kafka
Stream processing using Kafka
Knoldus Inc.
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
Jeff Holoman
 
[오픈소스컨설팅]Kafka message system 맛보기
[오픈소스컨설팅]Kafka message system 맛보기 [오픈소스컨설팅]Kafka message system 맛보기
[오픈소스컨설팅]Kafka message system 맛보기
Chanyeol yoon
 
Kafka at Peak Performance
Kafka at Peak PerformanceKafka at Peak Performance
Kafka at Peak Performance
Todd Palino
 
Disaster Recovery Plans for Apache Kafka
Disaster Recovery Plans for Apache KafkaDisaster Recovery Plans for Apache Kafka
Disaster Recovery Plans for Apache Kafka
confluent
 
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Henning Jacobs
 
Introduction to Kafka Streams
Introduction to Kafka StreamsIntroduction to Kafka Streams
Introduction to Kafka Streams
Guozhang Wang
 
Kafka 101 and Developer Best Practices
Kafka 101 and Developer Best PracticesKafka 101 and Developer Best Practices
Kafka 101 and Developer Best Practices
confluent
 
Multi-Datacenter Kafka - Strata San Jose 2017
Multi-Datacenter Kafka - Strata San Jose 2017Multi-Datacenter Kafka - Strata San Jose 2017
Multi-Datacenter Kafka - Strata San Jose 2017
Gwen (Chen) Shapira
 
Handle Large Messages In Apache Kafka
Handle Large Messages In Apache KafkaHandle Large Messages In Apache Kafka
Handle Large Messages In Apache Kafka
Jiangjie Qin
 
Understand your system like never before with OpenTelemetry, Grafana, and Pro...
Understand your system like never before with OpenTelemetry, Grafana, and Pro...Understand your system like never before with OpenTelemetry, Grafana, and Pro...
Understand your system like never before with OpenTelemetry, Grafana, and Pro...
LibbySchulze
 
Kafka presentation
Kafka presentationKafka presentation
Kafka presentation
Mohammed Fazuluddin
 
KAFKA 3.1.0.pdf
KAFKA 3.1.0.pdfKAFKA 3.1.0.pdf
KAFKA 3.1.0.pdf
wonyong hwang
 
SeaweedFS introduction
SeaweedFS introductionSeaweedFS introduction
SeaweedFS introduction
chrislusf
 

What's hot (20)

Apache Kafka Best Practices
Apache Kafka Best PracticesApache Kafka Best Practices
Apache Kafka Best Practices
 
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
 
Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?
 
Introduction to Kafka Cruise Control
Introduction to Kafka Cruise ControlIntroduction to Kafka Cruise Control
Introduction to Kafka Cruise Control
 
Stephan Ewen - Experiences running Flink at Very Large Scale
Stephan Ewen -  Experiences running Flink at Very Large ScaleStephan Ewen -  Experiences running Flink at Very Large Scale
Stephan Ewen - Experiences running Flink at Very Large Scale
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
 
Stream processing using Kafka
Stream processing using KafkaStream processing using Kafka
Stream processing using Kafka
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
[오픈소스컨설팅]Kafka message system 맛보기
[오픈소스컨설팅]Kafka message system 맛보기 [오픈소스컨설팅]Kafka message system 맛보기
[오픈소스컨설팅]Kafka message system 맛보기
 
Kafka at Peak Performance
Kafka at Peak PerformanceKafka at Peak Performance
Kafka at Peak Performance
 
Disaster Recovery Plans for Apache Kafka
Disaster Recovery Plans for Apache KafkaDisaster Recovery Plans for Apache Kafka
Disaster Recovery Plans for Apache Kafka
 
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
 
Introduction to Kafka Streams
Introduction to Kafka StreamsIntroduction to Kafka Streams
Introduction to Kafka Streams
 
Kafka 101 and Developer Best Practices
Kafka 101 and Developer Best PracticesKafka 101 and Developer Best Practices
Kafka 101 and Developer Best Practices
 
Multi-Datacenter Kafka - Strata San Jose 2017
Multi-Datacenter Kafka - Strata San Jose 2017Multi-Datacenter Kafka - Strata San Jose 2017
Multi-Datacenter Kafka - Strata San Jose 2017
 
Handle Large Messages In Apache Kafka
Handle Large Messages In Apache KafkaHandle Large Messages In Apache Kafka
Handle Large Messages In Apache Kafka
 
Understand your system like never before with OpenTelemetry, Grafana, and Pro...
Understand your system like never before with OpenTelemetry, Grafana, and Pro...Understand your system like never before with OpenTelemetry, Grafana, and Pro...
Understand your system like never before with OpenTelemetry, Grafana, and Pro...
 
Kafka presentation
Kafka presentationKafka presentation
Kafka presentation
 
KAFKA 3.1.0.pdf
KAFKA 3.1.0.pdfKAFKA 3.1.0.pdf
KAFKA 3.1.0.pdf
 
SeaweedFS introduction
SeaweedFS introductionSeaweedFS introduction
SeaweedFS introduction
 

Similar to Apache kafka performance(latency)_benchmark_v0.3

[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster
NAVER D2
 
Kafka 자료 v0.1
Kafka 자료 v0.1Kafka 자료 v0.1
Kafka 자료 v0.1
Hyosang Hong
 
Kafka 자료 v0.1
Kafka 자료 v0.1Kafka 자료 v0.1
Kafka 자료 v0.1
Hyosang Hong
 
Warp
WarpWarp
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기
Ted Won
 
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
Jongsoo Jeong
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
hoondong kim
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community
Open Source Consulting
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
wonyong hwang
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우
jieunsys
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
Jinuk Kim
 
Streaming platform Kafka in SK planet
Streaming platform Kafka in SK planetStreaming platform Kafka in SK planet
Streaming platform Kafka in SK planet
Byeongsu Kang
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Esun Kim
 
[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자
Oracle Korea
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How ToJi-Woong Choi
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회
JaM2in
 
ApacheCon2011 에서는 무슨일이
ApacheCon2011 에서는 무슨일이ApacheCon2011 에서는 무슨일이
ApacheCon2011 에서는 무슨일이
Sangmin Lee
 
NoSQL
NoSQLNoSQL
NoSQL
Gruter
 
Advanced nGrinder 2nd Edition
Advanced nGrinder 2nd EditionAdvanced nGrinder 2nd Edition
Advanced nGrinder 2nd Edition
JunHo Yoon
 

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

[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster
 
Kafka 자료 v0.1
Kafka 자료 v0.1Kafka 자료 v0.1
Kafka 자료 v0.1
 
Kafka 자료 v0.1
Kafka 자료 v0.1Kafka 자료 v0.1
Kafka 자료 v0.1
 
Warp
WarpWarp
Warp
 
L4교육자료
L4교육자료L4교육자료
L4교육자료
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기
 
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
 
Streaming platform Kafka in SK planet
Streaming platform Kafka in SK planetStreaming platform Kafka in SK planet
Streaming platform Kafka in SK planet
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
 
[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회
 
ApacheCon2011 에서는 무슨일이
ApacheCon2011 에서는 무슨일이ApacheCon2011 에서는 무슨일이
ApacheCon2011 에서는 무슨일이
 
NoSQL
NoSQLNoSQL
NoSQL
 
Advanced nGrinder 2nd Edition
Advanced nGrinder 2nd EditionAdvanced nGrinder 2nd Edition
Advanced nGrinder 2nd Edition
 

More from SANG WON PARK

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

More from SANG WON PARK (16)

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

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의 최대 허용 가능한 수준 을 정하고, 이에 맞는 설정이 필요