kafka 单机/集群压力测试
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kafka 单机/集群压力测试相关的知识,希望对你有一定的参考价值。
参考技术A由于kafka吞吐量特别大,所以先考虑集群服务器的自身瓶颈,因为现在测试的是单机所以只会涉及到磁盘IO以及cpu,但是对于kafka来说对于cpu的使用还是可以忽略不计的,
1.1磁盘IO写入瓶颈
使用以下命令测试磁盘IO的写入瓶颈
sync;time -p bash -c "(dd if=/dev/zero of=test.dd bs=1M count=20000)"
说明: 在当前目录下创建一个test.dd的文件,写入20000个1M的数据
磁盘写入IO的结果
可以看到平均就是187MB/s
1.2 使用iostat命令监测磁盘io情况
使用命令
# iostat -x 1
说明: 扩展查看io性能,每秒刷新一次
注意: 如果没有iostat,请执行 yum install sysstat -y 进行安装 iostat命令
关注wkB/s和%util两个参数
wkB/s:每秒写入设备的数据量(单位:KB)
%util:消耗在I/O请求中的CPU时间百分比(设备带宽利用率)。如果该值接近100%说明设备出现了瓶颈。
如图现在这台机器的磁盘IO极限值为187MB/s
1.3 单机版测试kafka性能
因为测试的次数比较多,也没有去找kafka中数据存储设置,所以就使用docker部署单机版的kafka (因为测试的数据比较多,也就多次的删除了容器,重新启动镜像)
新建目录:
mkdir /usr/local/kafka_test
dockerfile
run.sh
sources.list
目录结构如下:
生成镜像
docker build -t kafka_test /usr/local/kafka_test
启动kafka
docker run -d -it kafka_test
测试结果
从表格中可以看出来五个分区就已经是极限了
结果分析
这中间并没有设置条数/每秒,所以就是按照kafka 就会按照量级自动的吞入数据,如果我们需要对于消息的即时性做控制,还需要再重新测试一下,按照业务的延迟找到最合适的数量(单机版,然后再部署集群,测试适合的数量)
集群测试:
部署就不再这里说明了
本次测试的是三台机器集群
测试结果:
之后还测试了9个分区的topic 因为空间不足所以就没有继续测下去,但是看部分数据还超过了500MB/s还是有上升空间的
1.3 磁盘IO 读取瓶颈
使用一下命令测试磁盘IO的读取瓶颈
hdparm -tT --direct /dev/vda
说明: hdparm命令是显示与设定硬盘的参数, -t参数为评估硬盘的读取效率(不经过磁盘cache), -T参数为评估硬盘的读取效率(经过磁盘cache).
kafka性能测试
一、介绍
Kafka官方在安装包的bin目录下提供了kafka-producer-perf-test.sh和kafka-consumer-perf-test.sh两个压力测试脚本,分别用于测试生产者和消费者的性能。通过Kafka压力测试脚本,能够得知Kafka集群的性能瓶颈所在(CPU/内存/网络带宽)等,在通常情况下Kafka集群的性能瓶颈是网络带宽
二、生产者压力测试
创建一个主题test
./kafka-topics.sh --create --zookeeper 116.62.13.104:2181 --topic test --partitions 2 --replication-factor 1
开始测试:
topic指定消息存放的topic :test
record-size是一条信息有多大(单位是Byte):200B
num-records是总共发送多少条信息 :10000
throughput是每秒多少条信息
./kafka-producer-perf-test.sh --topic test --record-size 200 --num-records 10000 --throughput 1000 --producer-props bootstrap.servers=172.30.118.68:9092
1791 records sent, 330.5 records/sec (0.06 MB/sec), 1465.8 ms avg latency, 3629.0 max latency.
1078 records sent, 208.8 records/sec (0.04 MB/sec), 5392.9 ms avg latency, 7718.0 max latency.
1848 records sent, 308.9 records/sec (0.06 MB/sec), 9319.5 ms avg latency, 11853.0 max latency.
1386 records sent, 261.9 records/sec (0.05 MB/sec), 13290.8 ms avg latency, 15757.0 max latency.
1078 records sent, 191.8 records/sec (0.04 MB/sec), 17191.0 ms avg latency, 20301.0 max latency.
924 records sent, 181.4 records/sec (0.03 MB/sec), 21931.1 ms avg latency, 24458.0 max latency.
770 records sent, 138.9 records/sec (0.03 MB/sec), 26450.5 ms avg latency, 29244.0 max latency.
10000 records sent, 235.726746 records/sec (0.04 MB/sec), 13813.99 ms avg latency, 32619.00 ms max latency, 12140 ms 50th, 31488 ms 95th, 32521 ms 99th, 32610 ms 99.9th.
10000 records sent, 235.726746 records/sec (0.04 MB/sec), 13813.99 ms avg latency, 32619.00 ms max latency, 12140 ms 50th, 31488 ms 95th, 32521 ms 99th, 32610 ms 99.9th.
结果分析:
发送记录数10000
条,
每秒发送记录数235.726746
条,
每秒发送数据量0.04
MB,
平均每条记录延迟 13813.99
ms,
最大延迟 32619.00
ms
三、消费者压力测试
zookeeper指定zookeeper集群,
topic指定消费的topic,
fetch-size指定每次取出的数据大小(单位为Byte)
messages总共消费的消息个数
threads 线程数量
./kafka-consumer-perf-test.sh --zookeeper 116.62.13.104:2181 --topic test --fetch-size 200 --messages 10000 --threads 1
start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec
2020-09-05 16:57:13:685, 2020-09-05 16:57:30:844, 1.9073, 0.1112, 10000, 582.7845
结果分析:
本次消费开始时间2020-09-05 16:57:13:685
,
本次消费结束时间2020-09-05 16:57:30:844
,
消费数据量 1.9073
MB,
平均每秒吞吐 0.1112
MB/s,
消费记录数 10000
条,
平均每秒消费 582.7845
条
以上是关于kafka 单机/集群压力测试的主要内容,如果未能解决你的问题,请参考以下文章