【Kafka入门系列十四】kafka-producer-perf-test脚本使用方法

2017-10-19 20:03 阅读 203 views 次 评论 0 条

【Kafka入门系列十四】kafka-producer-perf-test脚本使用方法

    Kafka提供了kafka-producer-perf-test脚本可以很方便地测试单个Kafka producer实例的吞吐量和延时性能指标。

    一个典型的kafka-producer-perf-test脚本调用命令如下:

bin/kafka-producer-perf-test.sh --topic test --num-records 100000000 --record-size 1000 --throughput  -1 --producer-props bootstrap.servers=localhost:9092 acks=-1 compression.type=lz4

上面命令中比较关键的参数包括:

  • --num-records:  指定这次测试要发送的总消息数。笔者建议每次执行kafka-producer-perf-test脚本至少要跑够5分钟的时间,这样得出的测试结果才比较准确,因此这个参数最好设置大一些

  • --record-size:模拟消息的大小。这个参数最好和你生产环境中的平均消息大小保持一致,这样测试结果才能更准确地反映实际使用场景。假设你的业务中消息的平均大小是1MB,那么设置成该参数为1024就可以了。

  • --throughput:吞吐量上限阈值。如果没有TPS的限制,设置成-1就可以了。这里也是同样的原则:和你真实业务场景中的TPS目标保持一致。如果没有明确的预期,可以先设置成-1看下当前能够达到的最大TPS是多少。

  • --compression.type:设置消息压缩类型。生产环境中应该没有不启动压缩的吧?根据笔者的经验,目前Kafka与LZ4的组合效果最好,可以应用到生产环境。另外,Kafka社区已经在考虑加入对ZStandard的支持。ZStandard是Facebook开源的压缩算法,据称完胜目前其他所有压缩算法,让我们拭目以待吧。

  • --print-metrics:这个比较尴尬了,你会发现当前最新版本(0.10.2.0)没有这个参数。好吧,友情广告一下,这个是0.11.0版本新加的功能,可以在测试结束之后打印producer相关的所有JMX性能指标,非常方便用户进行细粒度的调优和DEBUG。为什么要在这里说这个参数——因为这个参数是我加上去的。。。。

笔者在本机测试了一下这个脚本,结果如下:

    解析一下这段输出: 共发送消息1亿条,平均每秒发送62万+,吞吐量是600MB/s——笔者使用了本地loopback,所以才能达到600MB,否则如果是千兆网卡的话,是无法做到这么高的TPS的。测试结果还给出了延时的测量结果:平均延时12ms,最大延时480ms,其中有一半请求的延时在11ms,有95%的请求的延时在17ms等等。

    如果想进一步调优produce请求的延时,可以监控producer的JMX指标去看下延时到底是花费在哪部分,通常都可能是因为Remote部分——即leader等待所有follower都写入消息才返回。


版权声明:本文版权由木秀林网所有,转载请保留链接:【Kafka入门系列十四】kafka-producer-perf-test脚本使用方法
分类:Kafka解析 标签:

发表评论


表情