kafka压力测试及调优

Kafka压测可以查看到哪个地方出现了瓶颈(CPU,内存,网络IO),一般都是网络IO达到瓶颈。
创建一个测试主题

kafka-topics --create --partitions 12 --replication-factor 1 --zookeeper node3:2181 --topic test

生产者压力测试

sh /opt/cloudera/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678/bin/kafka-producer-perf-test --topic test --record-size 2048 --num-records 1000000 --throughput -1 --producer-props bootstrap.servers=node3:9092,node4:9092,node5:9092

说明
● record-size是一条信息有多大,单位是字节
● num-records是总共发送多少条信息
● throughput 是每秒多少条信息,设成-1,表示不限流,可测出生产者最大吞吐量

消费者压力测试

/opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/lib/kafka/bin/kafka-consumer-perf-test.sh \
--broker-list node3:9092,node4:9092,node5:9092 \
--topic test --threads 1 --fetch-size 10000 --messages 1000000

说明
● broker-list broker节点列表
● fetch-size 每次fetch的数据的大小
● messages 共消费的消息数

若是kafka集群达不到性能需求,可以做分区扩容,增加并行度,以此提高吞吐量

Kafka分区扩容
并对下游flink程序调大并行度,kafka分区数=flink并行度

sh /opt/cloudera/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678/bin/kafka-topics --partitions 24 --alter --zookeeper node3:2181,node4:2181,node5:2181 --topic test

Kafka调优

CM页面kafka配置调优

num.network.threads=cpu核数+1 #网络通信处理线程数,默认值3
num.io.threads=cpu核数*2 #io磁盘io处理线程数,默认值8
replica.lag.time.max.ms= 30s # 如果网络不好,或者kafka集群压力较大,会出现副本丢失,然后会频繁复制副本,导致集群压力更大,此时可以调大该参数,默认值10s
broker_max_heap_size #堆内存大小,默认4G
batch.size=1M #默认16KB
buffer.memory=64M #默认32M

producer方
compression.type=snappy #数据压缩,默认不压缩,配置一种适合的压缩算法,可以大幅度的减缓网络压力和Broker的存储压力。

consumer方
//增大poll数量, 默认500拉取数量
//fetch.max.bytes 每个批次fetch的大小 默认50m
//拉取的周期

ZooKeeper调优
ZooKeeper Server 的 Java 堆栈大小(字节),8G
maxClientCnxns (最大客户端连接数),默认1024,改成2048

猜你喜欢

转载自blog.csdn.net/xfp1007907124/article/details/126992201