Kafka测试及性能调优详细总结

由于业务需求,针对kafka在不同参数下的性能进行测试。从而进行kafka性能调优

测试目标

测试kafka 0.8n的性能(Producer/Consumer性能)。当消息大小、批处理大小、压缩等参数变化时对吞吐率的影响。

测试环境


软件版本:kafka 0.8.1.1
硬件环境:3台多云服务组成的kafka集群。各服务器CPU4核,内存16G,配置如下:

服务器IP:

203.150.54.215

203.150.54.216

203.150.54.217

测试方法

使用kafka官方提供的kafa-perf工具做性能测试

测试步骤


一、测试环境准备
1、测试工具kafka-perf的准备

cp kafka-perf_2.10-0.8.1.1.jar /application/kafka/libs/


2、启动kafka

cd /application/kafka

vim config/server.properties  #内容见下图

./bin/kafka-server-start.sh --daemon config/server.properties

3、测试集群可靠性

创建一个主题,复制因子为3.

[root@203-150-54-215 kafka]# bin/kafka-topics.sh --create –zookeeper 203.150.54.215:21203,203.150.54.216:21203,203.150.54.217:21203 --replication-factor 3 --partitions 3 --topic 88

Created topic "88".

查看创建的主题分区情况

[root@203-150-54-215 kafka]# bin/kafka-topics.sh --describe --zookeeper  203.150.54.215:21203 --topic 88

Topic:88        PartitionCount:3        ReplicationFactor:3     Configs:

Topic: 88       Partition: 0    Leader: 3       Replicas: 3,1,2 Isr: 3,1,2

Topic: 88       Partition: 1    Leader: 1       Replicas: 1,2,3 Isr: 1,2,3

Topic: 88       Partition: 2    Leader: 2       Replicas: 2,3,1 Isr: 2,3,1

在215上启动生产者

[root@203-150-54-215 kafka]# bin/kafka-console-producer.sh --broker-list 203.150.54.215:21204 --topic 88

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See #StaticLoggerBinder for further details.

test

hh

在216上进行消费

[root@203-150-54-216 kafka]#       bin/kafka-console-consumer.sh --zookeeper 203.150.54.216:21203 --topic 88 --from-beginning                

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See #StaticLoggerBinder for further details.

test

hh

从上可知:3个服务器集群之间链接正常,下面进行性能测试
kafka-producer-perf-test.sh中参数说明:

messages 生产者发送走的消息数量

message-size 每条消息的大小

batch-size 每次批量发送消息的数量

topics 生产者发送的topic

threads 生产者

broker-list 安装kafka服务的机器ip:porta列表

producer-num-retries 一个消息失败发送重试次数

request-timeouts-ms 一个消息请求发送超时时间

bin/kafka-consumer-perf-test.sh中参数说明:

zookeeper  zk配置

messages 消费者消费消息的总数量

topic 消费者需要消费的topic

threads 消费者使用几个线程同时消费

group 消费者组名称

socket-buffer-sizes socket缓存大小

fetch-size 每次想kafka broker请求消费消息大小

consumer.timeout.ms 消费者去kafka broker拿一条消息的超时时间


二、测试生产者吞吐率
此项只测试producer在不同的batch-zie,patition等参数下的吞吐率,也就是数据只被及计划,没有consumer读取数据消费情况。
生成Topic:
生成不同复制因子,partition的topic

bin/kafka-topics.sh --zookeeper 203.150.54.215:21203 --create --topic test-pati1-rep1 --partitions 1 --replication-factor 1

bin/kafka-topics.sh --zookeeper 203.150.54.215:21203 --create --topic test-pati1-rep2 --partitions 1 --replication-factor 2

bin/kafka-topics.sh --zookeeper 203.150.54.215:21203 --create --topic test-pati2-rep1 --partitions 2 --replication-factor 1

bin/kafka-topics.sh --zookeeper 203.150.54.215:21203 --create --topic test-pati2-rep2 --partitions 2 --replication-factor 2

bin/kafka-topics.sh --zookeeper 203.150.54.215:21203 --create --topic test-pati3-rep1 --partitions 3 --replication-factor 1

bin/kafka-topics.sh --zookeeper 203.150.54.215:21203 --create --topic test-pati3-rep2 --partitions 3 --replication-factor 2

测试producer吞吐率
调整batch-size,thread,topic,压缩等参数测试producer吞吐率。
示例:

a)批处理为1,线程数为1,复制因子为1

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgwjxp.html