KEMBAR78
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK) | PDF
Hadoop Eco 성능 테스트 환경(Kafka 편)
2017.06
성능 검증 환경 구성
Logstash
ElasticSearch
J-Meter
Kafka Broker1
Kafka Broker2
Kafka Broker3
장비1
장비2
장비3
Event Injection
Zookeeper
JMX Monitoring
Kibana
구성도
구매 이력 데이터 50 byte
동시 Thread 수 : 5, 10, 15, 20, 25, 30
Mac OS, 2.5G, 16G
VM : CentOS6, 3.3G 4Core HT, 4G
VM : CentOS7, 3.3G 4Core HT, 8G
성능 검증 환경 구성 J-Meter 구성
• J-meter?
• Thread수를 지정하여 Stress을 줄 수 있음.
• Thread수를 5, 10, 15, 20, 25, 30 으로 연속적으로 부하를 발생 시킴
{
"host" : "192.168.4.182",
"port" : 9999,
"queries" : [
{
"object_name" : "kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec",
"attributes" : [ "OneMinuteRate"],
"object_alias" : "BytesInPerSec"
},
{
"object_name" : "kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec",
"attributes" : [ "OneMinuteRate"],
"object_alias" : "BytesOutPerSec"
},
{
"object_name" : "kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec",
"attributes" : [ "OneMinuteRate"],
"object_alias" : "MessagesInPerSec"
},
{
"object_name" : "kafka.network:type=RequestMetrics,name=TotalTimeMs,request=Produce",
"attributes" : [ "999thPercentile"]
},
{
"object_name" : "kafka.network:type=RequestMetrics,name=TotalTimeMs,request=FetchConsumer",
"attributes" : [ "999thPercentile"]
},
{
"object_name" : "kafka.network:type=RequestMetrics,name=TotalTimeMs,request=FetchFollower",
"attributes" : [ "999thPercentile"]
}
]
}
성능 검증 환경 구성 ELK중 Logstash 구성
• ELK ( Elastic Search, Logstash, Kibana )
• Kafka Broker를 설정에서 JMX 설정을 추가로 해주어야 함!!!
성능 검증 환경 구성 Kibana Dashboard 구성
• 로그 분석 용도로 사용 가능함. 실시간 성능 정보 수집 및 Historical 정보도 Time Window로 조회 가능
Kafka 성능 요인 Partition의 수
• Partition 2개의 경우 : 대략 35% 정도 상승 (Partition 1에서 성능 대비)
• Partition 3개의 경우 : 대략 100% 정도 상승 (Partition 1에서 성능 대비)
=> 파티션의 개수 증가가 성능과 비례하나 네트워크 병목 및 Kafka 내 처리 비용을 고려하여 시스템 규모에 적합한 파티션
개수 확인 필요
72,000 Msg/s
4.6 Mbyte/s
110,000 Msg/s
7.5 Mbyte/s
Partition 2
Partition 3
Kafka 성능 요인 ACK 수준
• Ack 수준을 0으로 하는 경우 수준 1일 경우 대비하여 60% 정도 상승
=> 데이터 유실 허용 수준에 따라 성능이 부족할 경우 ACK 수준 0 고려할 수도 있음
120,000 Msg/s
7.8 Mbyte/s
Partition 2
Kafka 성능 요인 압축수준
• Gzip 압축을 하는 경우 압축을 하지 않는 경우에 비해 성능은 11% 정도 저하
• 하지만 네트워크 사용량은 기존 대비 60% 정도 줄어듦
=> 네트워크 병목이 발생하는 경우 압축 수준을 고려할 필요 있음
64,000 Msg/s
1.2 Mbyte/s
Partition 2에서 ack 1,
compression gzip
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)

카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)

  • 1.
    Hadoop Eco 성능테스트 환경(Kafka 편) 2017.06
  • 2.
    성능 검증 환경구성 Logstash ElasticSearch J-Meter Kafka Broker1 Kafka Broker2 Kafka Broker3 장비1 장비2 장비3 Event Injection Zookeeper JMX Monitoring Kibana 구성도 구매 이력 데이터 50 byte 동시 Thread 수 : 5, 10, 15, 20, 25, 30 Mac OS, 2.5G, 16G VM : CentOS6, 3.3G 4Core HT, 4G VM : CentOS7, 3.3G 4Core HT, 8G
  • 3.
    성능 검증 환경구성 J-Meter 구성 • J-meter? • Thread수를 지정하여 Stress을 줄 수 있음. • Thread수를 5, 10, 15, 20, 25, 30 으로 연속적으로 부하를 발생 시킴
  • 4.
    { "host" : "192.168.4.182", "port": 9999, "queries" : [ { "object_name" : "kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec", "attributes" : [ "OneMinuteRate"], "object_alias" : "BytesInPerSec" }, { "object_name" : "kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec", "attributes" : [ "OneMinuteRate"], "object_alias" : "BytesOutPerSec" }, { "object_name" : "kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec", "attributes" : [ "OneMinuteRate"], "object_alias" : "MessagesInPerSec" }, { "object_name" : "kafka.network:type=RequestMetrics,name=TotalTimeMs,request=Produce", "attributes" : [ "999thPercentile"] }, { "object_name" : "kafka.network:type=RequestMetrics,name=TotalTimeMs,request=FetchConsumer", "attributes" : [ "999thPercentile"] }, { "object_name" : "kafka.network:type=RequestMetrics,name=TotalTimeMs,request=FetchFollower", "attributes" : [ "999thPercentile"] } ] } 성능 검증 환경 구성 ELK중 Logstash 구성 • ELK ( Elastic Search, Logstash, Kibana ) • Kafka Broker를 설정에서 JMX 설정을 추가로 해주어야 함!!!
  • 5.
    성능 검증 환경구성 Kibana Dashboard 구성 • 로그 분석 용도로 사용 가능함. 실시간 성능 정보 수집 및 Historical 정보도 Time Window로 조회 가능
  • 6.
    Kafka 성능 요인Partition의 수 • Partition 2개의 경우 : 대략 35% 정도 상승 (Partition 1에서 성능 대비) • Partition 3개의 경우 : 대략 100% 정도 상승 (Partition 1에서 성능 대비) => 파티션의 개수 증가가 성능과 비례하나 네트워크 병목 및 Kafka 내 처리 비용을 고려하여 시스템 규모에 적합한 파티션 개수 확인 필요 72,000 Msg/s 4.6 Mbyte/s 110,000 Msg/s 7.5 Mbyte/s Partition 2 Partition 3
  • 7.
    Kafka 성능 요인ACK 수준 • Ack 수준을 0으로 하는 경우 수준 1일 경우 대비하여 60% 정도 상승 => 데이터 유실 허용 수준에 따라 성능이 부족할 경우 ACK 수준 0 고려할 수도 있음 120,000 Msg/s 7.8 Mbyte/s Partition 2
  • 8.
    Kafka 성능 요인압축수준 • Gzip 압축을 하는 경우 압축을 하지 않는 경우에 비해 성능은 11% 정도 저하 • 하지만 네트워크 사용량은 기존 대비 60% 정도 줄어듦 => 네트워크 병목이 발생하는 경우 압축 수준을 고려할 필요 있음 64,000 Msg/s 1.2 Mbyte/s Partition 2에서 ack 1, compression gzip