kafka 10 性能测试

最近需要做kafka性能测试,一般的比较省事的作法,是直接使用kafka自带的脚本,选个比较NB的机器做压测即可。jdk版本不能太低,否则可能出现下面的异常

Exception in thread "main" java.lang.UnsupportedClassVersionError: kafka/admin/TopicCommand : Unsupported major.minor version 51.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: kafka.admin.TopicCommand. Program will exit.

但是网上搜索出来的结果,基本上都是kafka 8版本的,在实地测试中,kafka脚本测试不同版本创建的topic还是很有问题的,可能直接报错,所以记录下,防止走弯路。废话不多说,直接上脚本。

1. 测试前准备:创建topic

1.1 查看参数描述:./bin/kafka-topics.sh

1.2 创建topic,根据实际应用场景选择replication-factor和partitions 

./bin/kafka-topics.sh --create --zookeeper zookeeper_1,zookeeper_2,zookeeper_3 --replication-factor 1 --partitions 1 --topic topic_name

1.3 查看创建topic的详细信息

./bin/kafka-topics.sh --describe --zookeeper zookeeper_1,zookeeper_2,zookeeper_3 --topic topic_name

2. producer测试: 主要不同kafka 8部分  

2.1 首先看看参数:./bin/kafka-producer-perf-test.sh

usage: producer-performance [-h] --topic TOPIC --num-records NUM-RECORDS --record-size RECORD-SIZE --throughput THROUGHPUT --producer-props PROP-NAME=PROP-VALUE [PROP-NAME=PROP-VALUE ...]    脚本规范

optional arguments:
  -h, --help             show this help message and exit
  --topic TOPIC          produce messages to this topic
  --num-records   NUM-RECORDS
                            number of messages to produce
  --record-size     RECORD-SIZE
                           message size in bytes
  --throughput     THROUGHPUT
                           throttle maximum message throughput to *approximately* THROUGHPUT messages/sec
  --producer-props   PROP-NAME=PROP-VALUE [PROP-NAME=PROP-VALUE ...]
                                 kafka producer related configuaration properties like bootstrap.servers,client.id etc..

参数producer-props可以并列填写多个参数,这里给个案例:

--producer-props bootstrap.servers=broker_1,broker_2,broker_3 acks=all

这里设定两个参数bootstrap.servers和acks,其他的都是默认,具体代表的意义,可以参看apache kafaka官网的documents>>producer config;

最后列个完整的producer测试脚本

 ./bin/kafka-producer-perf-test.sh --topic topic_name --throughput 100000 --num-records 100000 --producer-props --producer-props bootstrap.servers=broker_1,broker_2,broker_3 acks=all --record-size 1000

3. consumer测试

需要特别注意一点,就是在测试不同大小的消息队列时,最好使用不同的topic。完整流程最好这样:(1)确定测试的record-size = A1;(2)新建topic;(3)使用producer脚本和(2)的topic,脚本参数设定record-size = A1,产生足量的数据;(4)consumer测试,对应message-size = A1

按照和producer类似的方法,这里只列个脚本案例:

./bin/kafka-consumer-perf-test.sh --messages 100000 --topic topic_name --zookeeper zookeeper_1,zookeeper_2,zookeeper_3 --broker_1,broker_2,broker_3 --message-size A1


声明:转载请注明本文链接

你可能感兴趣的:(测试工具)