分享

apache kafka性能测试命令使用和构建kafka-perf

问题导读
1、如何利用kafka官方提供的工具做性能测试?
2、如何把perf性能测试程序打包到kafka_2.x.0-0.8.x.x.jar中?
3、问题出错,有哪些解决途径?






昨天在公司时,本来想用kafka官方提供的工具做性能测试的。但事与愿违,当我执行官方提供的kafka测试脚本,却报错没有找到ProducerPerformance,后来浏览一些代码文件,才发现没有把perf性能测试程序打包到kafka_2.x.0-0.8.x.x.jar发行版本中。

现在来教您如何打包做测试。
1.准备工作:
安装gradle

2.下载kafka源代码
kafka-0.8.1源代码


3.编译kafka-perf_2.x-0.8.1.x.jar
编译注意事项:默认情况下是编译为2.8.0版本,也可以指定版本编译。目前编译高版本的kafka-perf(2.8.0以上版本)是由问题的,因为build.gradle配置参数有问题(版本不同,会报如下错误,版本不兼容错误),如果要构建高版本kafka-perf多版本修改内容如下:
下载build.gradle   替换掉kafka-0.8.1.1-src根目录下文件即可
编译构建执行命令:
  1. gradle jar                           默认生成2.8.0版本的kafka和kafka-perf的jar
  2. gradle jar_core_2_8_0                生成2.8.0版本的kafka的jar
  3. gradle jar_core_2_8_2                生成2.8.2版本的kafka的jar
  4. gradle jar_core_2_9_1                生成2.9.1版本的kafka的jar
  5. gradle jar_core_2_9_2                生成2.9.2版本的kafka的jar
  6. gradle jar_core_2_10_1                生成2.10.1版本的kafka的jar
  7. gradle perf:jar                        生成2.8.0版本的kafka和kafka-perf的jar
  8. gradle perf_2_9_1                生成2.9.1版本的kafka和kafka-perf的jar
  9. gradle perf_2_10_1                生成2.10.1版本的kafka和kafka-perf的jar
  10. gradle -PscalaVersion=2.8.0 jar                        编译scala 2.8.0版本编译所有jar
  11. gradle -PscalaVersion=2.8.2 jar                        编译scala 2.8.2版本编译所有jar
  12. gradle -PscalaVersion=2.9.1 jar                        编译scala 2.9.1版本编译所有jar
  13. gradle -PscalaVersion=2.10.1 jar                编译scala 2.10.1版本编译所有jar
复制代码



如果不想编译jar,可以直接下载:kafka-perf_2.x.x-0.8.1.jar
  1. lizhitao@users-MacBook-Pro:~/mt_wp/tmp$ cd kafka-0.8.1.1-src
  2. lizhitao@users-MacBook-Pro:~/mt_wp/tmp/kafka-0.8.1.1-src$gradle jar
  3. lizhitao@users-MacBook-Pro:~/mt_wp/tmp/kafka-0.8.1.1-src$gradle perf:jar
  4. The TaskContainer.add() method has been deprecated and is scheduled to be removed in Gradle 2.0. Please use the create() method instead.
  5. Building project 'core' with Scala version 2.8.0
  6. Building project 'perf' with Scala version 2.8.0
  7. :core:compileJava UP-TO-DATE
  8. :core:compileScala
  9. /Users/lizhitao/mt_wp/tmp/kafka-0.8.1.1-src/core/src/main/scala/kafka/admin/AdminUtils.scala:243: non variable type-argument String in type pattern scala.collection.Map[String,_] is unchecked since it is eliminated by erasure
  10.         case Some(map: Map[String, _]) =>
  11.                        ^
  12. /Users/lizhitao/mt_wp/tmp/kafka-0.8.1.1-src/core/src/main/scala/kafka/admin/AdminUtils.scala:246: non variable type-argument String in type pattern scala.collection.Map[String,String] is unchecked since it is eliminated by erasure
  13.             case Some(config: Map[String, String]) =>
  14.                               ^
  15. /Users/lizhitao/mt_wp/tmp/kafka-0.8.1.1-src/core/src/main/scala/kafka/api/LeaderAndIsrResponse.scala:66: non variable type-argument String in type pattern (String, Int) is unchecked since it is eliminated by erasure
  16.     for ((key:(String, Int), value) <- responseMap) {
  17.               ^
  18. /Users/lizhitao/mt_wp/tmp/kafka-0.8.1.1-src/core/src/main/scala/kafka/utils/Utils.scala:363: non variable type-argument V in type pattern List[V] is unchecked since it is eliminated by erasure
  19.         case Some(l: List[V]) => m.put(k, v :: l)
  20.                      ^
  21. four warnings found
  22. :core:processResources UP-TO-DATE
  23. :core:classes
  24. :core:copyDependantLibs UP-TO-DATE
  25. :core:jar UP-TO-DATE
  26. :perf:compileJava UP-TO-DATE
  27. :perf:compileScala
  28. :perf:processResources UP-TO-DATE
  29. :perf:classes
  30. :perf:jar UP-TO-DATE
  31. BUILD SUCCESSFUL
  32. Total time: 54.41 secs
复制代码


编译jar包目录如下:
a. kafka_2.x-0.8.1.1.jar
kafka-0.8.1.1-src/core/build
1.png


b.kafka-perf_2.x-0.8.1.x.jar
kafka-0.8.1.1-src/perf/build/libs
2.png



kafka多版本jar:
3.png



4. kafka性能测试命令用法:
4.1 创建topic
  1. bin/kafka-topics.sh --zookeeper 192.168.2.225:2182,192.168.2.225:2183/config/mobile/mq/mafka02 --create --topic test-rep-one --partitions 6 --replication-factor 1
复制代码



4.2 kafka-producer-perf-test.sh中参数说明:
  1. messages                生产者发送总的消息数量
  2. message-size                每条消息大小
  3. batch-size                每次批量发送消息的数量
  4. topics                        生产者发送的topic
  5. threads                        生产者使用几个线程同时发送
  6. broker-list                安装kafka服务的机器ip:port列表
  7. producer-num-retries        一个消息失败发送重试次数
  8. request-timeout-ms        一个消息请求发送超时时间
复制代码



4.3 bin/kafka-consumer-perf-test.sh中参数说明:
  1. zookeeperzk                配置
  2. messages                消费者消费消息总数量
  3. topic                        消费者需要消费的topic
  4. threads                        消费者使用几个线程同时消费
  5. group                        消费者组名称
  6. socket-buffer-sizesocket        缓冲大小
  7. fetch-size                每次向kafka broker请求消费大小
  8. consumer.timeout.ms        消费者去kafka broker拿去一条消息超时时间
复制代码



4.4 生产者发送数据:
  1. lizhitao@users-MacBook-Pro:~/mt_wp/tmp/kafka-0.8.1.1-src$ bin/kafka-producer-perf-test.sh --messages 5000000 --message-size 5000  --batch-size 5000 --topics test-rep-one --threads 8 --broker-list mobile-esb03:9092,mobile-esb04:9092,mobile-esb05:9092
  2. start.time, end.time, compression, message.size, batch.size, total.data.sent.in.MB, MB.sec, total.data.sent.in.nMsg, nMsg.sec
  3. [2014-07-06 12:52:36,139] WARN Property reconnect.interval is not valid (kafka.utils.VerifiableProperties)
  4. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
  5. SLF4J: Defaulting to no-operation (NOP) logger implementation
  6. SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
  7. [2014-07-06 12:52:36,199] WARN Property reconnect.interval is not valid (kafka.utils.VerifiableProperties)
  8. [2014-07-06 12:52:36,202] WARN Property reconnect.interval is not valid (kafka.utils.VerifiableProperties)
  9. [2014-07-06 12:52:36,204] WARN Property reconnect.interval is not valid (kafka.utils.VerifiableProperties)
  10. [2014-07-06 12:52:36,206] WARN Property reconnect.interval is not valid (kafka.utils.VerifiableProperties)
  11. [2014-07-06 12:52:36,207] WARN Property reconnect.interval is not valid (kafka.utils.VerifiableProperties)
  12. [2014-07-06 12:52:36,209] WARN Property reconnect.interval is not valid (kafka.utils.VerifiableProperties)
  13. [2014-07-06 12:52:36,214] WARN Property reconnect.interval is not valid (kafka.utils.VerifiableProperties)
复制代码



4.5 消费者消费数据
  1. lizhitao@users-MacBook-Pro:~/mt_wp/tmp/kafka-0.8.1.1-src$ bin/kafka-consumer-perf-test.sh --zookeeper
  2. 192.168.2.225:2182,192.168.2.225:2183/config/mobile/mq/mafka02 --messages 50000000 --topic test-rep-one --threads 1
  3. start.time, end.time, fetch.size, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec
  4. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
  5. SLF4J: Defaulting to no-operation (NOP) logger implementation
  6. SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
复制代码





已有(1)人评论

跳转到指定楼层
694809295@qq.co 发表于 2017-4-21 13:38:51
kafka_2.11-0.9.0.1  目前用的是这个版本 是不是这个版本用不了呢?每次运行kafka-producer-perf-test.sh脚本 都说message 参数无效 。我创建topic的时候 最后没有指定那个路径,和这个有无关系?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条