问题描述
Azure Event Hub支持 kafka,所以为了测试消息生产者所在环境与Azure Event Hub之间发送消息的性能如何,特别使用 kafka 官方测试生产者,消费者的性能工具 :
- kafka-producer-perf-test.bat
- kafka-consumer-perf-test.bat
(.bat 表示为Windows系统中运行, .sh表示在Linux系统中远行)
这些文件包含在kafka软件包中:https://kafka.apache.org/downloads
实现步骤
第一步:解压 kafka ,在bin/windows文件夹中,找到 kafka-producer-perf-test.bat 文件
第二步:通过CMD,执行 ” kafka-producer-perf-test.bat --help ” 来查看指令的参数
在本文中测试Azure Event Hub 需要配置的参数有:
1) --topic :指定消息需要发送到哪一个Event Hub (注意:kafka的Topic对应于Azure Event Hub Namespace下的一个Event Hub)
2)--num-records : 指定发送多少条消息到Event Hub中
3)--record-size :设置每一条消息的大小,单位是 bytes (1个字节)
4)--throughput :-1 表示不设置吞吐量的限制(throttle maximum message throughput to *approximately* THROUGHPUT messages/sec. Set this to -1 to disable throttling.)
5)--producer.config : 设置生产者的服务器配置信息,设置Event Hub Namespace的Connection String
## 基本设置 bootstrap.servers=*****.servicebus.chinacloudapi.cn:9093 security.protocol=SASL_SSL sasl.mechanism=PLAIN sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://*****.servicebus.chinacloudapi.cn/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=***************";
注:sasl.jaas.config中的connection string内容,需要从Azure Event Hub 的 Shared access policie 获取。把以上内容保存在一个单独文件中,如 kafka-producer-perf-test-config.txt
第三步:启动测试命令,然后查看输出结果
下面的命令表示:发送50万条1kb的数据到 test_topic 中
kafka-producer-perf-test.bat --topic test_topic --num-records 500000 --record-size 1024 --throughput -1 --producer.config kafka-producer-perf-test-config.txt
测试的结果显示:
3720 records sent, 743.6 records/sec (0.73 MB/sec), 47367.8 ms avg latency, 49685.0 ms max latency.
表示已经发送 3720条数据,每秒发送743条,平均延迟在47秒,最大延迟49秒 (>_< 测试机器网速堪忧啊!)
同理,使用(kafka-consumer-perf-test.bat)也可以测试消费端的性能。
参考资料
Kafka : https://kafka.apache.org