Kafka性能テスト分析


まず、趙崇賀さんが余暇を利用して行った圧力測定に特に感謝しなければならない.

一、テスト環境の準備


Cpu
メモリ
ハードドライブ
Intel(R) Xeon(R) CPU E5520 @ 2.27GHz
32G
6T
Kafkaクラスタ、サーバー個数:3台CMSゴミ回収を採用
JVM運転パラメータ
-Xmx1G -Xms1G -server -XX:+UseParNewGC -XX:+UseConcMarkSweepGC 
-XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -Djava.awt.headless=true 
-Xloggc:/usr/local/kafka_2.10-0.8.2.2/bin/../logs/kafkaServer-gc.log -verbose:gc 
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps 
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false
-Dkafka.logs.dir=/usr/local/kafka_2.10-0.8.2.2/bin/../logs
-Dlog4j.configuration=file:/usr/local/kafka_2.10-0.8.2.2/bin/../config/log4j.properties

Kafka server側構成
broker.id=165
port=9092
host.name=hadoop165.kuaiyong.in
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400


socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/download/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
log.cleaner.enable=false

zookeeper.connect=hadoop165.xxx.in:2181,hadoop166.xxx.in:2181,hadoop167.xxx.in:2181

zookeeper.connection.timeout.ms=6000

テストコマンド行は次のとおりです.
生産者:
bin/kafka-producer-perf-test.sh --broker-list=hadoop02:9092 
--messages 100000 --topic s1 --threads 10 --message-size 1000 
--batch-size 200 --compression-codec 1

消費者
bin/kafka-consumer-perf-test.sh --zookeeper hadoop03:2181 
--messages 500000 --topic s1 --threads 1

二、正常要求テスト


1、Producer:


データ量:230万件記録1000件のデータフォーマットをパッケージごとに送信する:圧縮フォーマットを採用する
試験結果最大処理量:39.2501 MB/S TPS:4156.6817本

2、Consumer


所要時間:18秒全体ファイルサイズ:2193.45 MB最大処理量:163.6659 MB/S TPS:171616.1767本

三、圧力要求テスト


1、Producer


データ量:1000万個のデータを梱包して1000個のデータフォーマットを発送する:圧縮フォーマットを採用する
試験結果時間:242秒総ファイルサイズ:9536.74 MB最大処理量:39.2531 MB/S TPS:415159.8856本

2、Consumer


消費時間:70秒全体ファイルサイズ:9536.74 MB最大処理量:145.4193 MB/S TPS:152483.1887本
結論:1000万本の圧力テストで性能が低下し、ボトルネック期間は500万本程度と推定