本文介绍使用 Kafka 的 SASL_SSL 接入点,对 Kafka 进行生产和消费压力测试。
注意
目前私网访问 Kafka 实例无法通过证书校验,会提示类似certificate verify failed
的报错信息。
私网访问 Kafka 实例,实际是使用 IP 进行业务访问,而 IP 是一个可变的地址,无法在证书里面固定配置。如果您确认要在私网环境通过 SASL_SSL 接入点连接 Kafka 实例,请在客户端添加ssl.endpoint.identification.algorithm=
配置,以跳过证书域名校验。
连接 ECS 实例。连接方式请参见连接 ECS 实例。
在 ECS 实例中下载 Kafka 2.2.2 版本工具包。
wget https://archive.apache.org/dist/kafka/2.2.2/kafka_2.11-2.2.2.tgz
解压开源 Kafka 2.2.2 版本工具包。
tar -zxvf kafka_2.11-2.2.2.tgz
配置鉴权。
./config
目录下。consumer.properties
和 producer.properties
文件,在文件中配置 SASL 用户类型、用户名称和密码。
使用 PLAIN 用户时:
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="{PLAIN用户名称}" password="{用户密码}"; sasl.mechanism=PLAIN security.protocol=SASL_SSL
使用 SCRAM 用户时:
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="{SCRAM用户名称}" password="{用户密码}"; sasl.mechanism=SCRAM-SHA-256 security.protocol=SASL_SSL
生产消息压力测试。
进入解压后文件的./bin
目录下。
执行以下命令,进行生产消息压力测试。
./kafka-producer-perf-test.sh --topic {Topic名称} --num-records 100000 --record-size 1000 --throughput 20000 --producer-props bootstrap.servers={SASL_SSL接入点域名:端口} --producer.config ../config/producer.properties
参数 | 说明 |
---|---|
--topic | 指定目标 Topic 的名称,需要提前在 Kafka 控制台创建。 |
--num-records | 发送的消息数量。 |
--record-size | 消息的大小,单位为 Byte。 |
--throughput | 每秒的吞吐量,即每秒发送多少条消息。 |
--producer-props | Kafka 生产者相关的配置属性。
|
--producer.config | 指定生产者的配置文件,比如可以配置为 |
查看压力测试结果。
[root@iv-xxx5uo bin]# ./kafka-producer-perf-test.sh --topic topic-1 --num-records 100000 --record-size 1000 --throughput 20000 --producer-props bootstrap.servers=kafka-xxxdgw.kafka.ivolces.com:9095 --producer.config ../config/producer.properties 62737 records sent, 12544.9 records/sec (11.96 MB/sec), 1501.5 ms avg latency, 2430.0 ms max latency. 100000 records sent, 11490.290704 records/sec (10.96 MB/sec), 1940.06 ms avg latency, 3803.00 ms max latency, 1934 ms 50th, 3651 ms 95th, 3798 ms 99th, 3799 ms 99.9th.
分析:本例中一共写入 10w 条消息,每秒向 Kafka 写入了 10.96MB 的数据,平均是 11490.290704 条消息/秒,每次写入的平均延迟为 1940.06 毫秒,最大的延迟为 3803.00 毫秒。
消费消息压力测试。
进入解压后文件的./bin
目录下。
执行以下命令,进行消费消息压力测试。
./kafka-consumer-perf-test.sh --topic {Topic名称} --fetch-size 1048576 --messages 100000 --group {Group名称} --broker-list {SASL_SSL接入点域名:端口} --consumer.config ../config/consumer.properties
参数 | 说明 |
---|---|
--topic | 指定需要订阅的目标 Topic 的名称。 |
--fetch-size | 一次请求提取的数据量 , 默认 1048576,单位为 Byte。 |
--messages | 消费的消息数量。 |
--group | 自定义设置 Group 的名称,无需提前在 kafka 控制台上创建。 |
--broker-list | Kafka 实例的接入点。请在控制台实例详情页面的服务访问区域中查看接入点信息。 |
--consumer.config | 指定消费者的配置文件,比如可以配置为 |
查看压力测试结果。
[root@iv-xxx5uo bin]# ./kafka-consumer-perf-test.sh --topic topic-1 --fetch-size 1048576 --messages 100000 --group group-1 --broker-list kafka-xxxdgw.kafka.ivolces.com:9095 --consumer.config ../config/consumer.properties start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec, rebalance.time.ms, fetch.time.ms, fetch.MB.sec, fetch.nMsg.sec 2024-08-05 17:44:26:414, 2024-08-05 17:44:40:749, 95.3674, 6.6528, 100000, 6975.9330, 3099, 11236, 8.4877, 8899.9644
执行命令后,返回如下类似结果,分析如下: