更新时间:2025-07-31 GMT+08:00

测试Kafka实例TPS

通过以下几个场景,测试不同实例规格的TPS。

  • 测试场景一(实例是否开启SASL):相同的Topic,实例分为开启SASL和未开启SASL
  • 测试场景二(同步/异步复制):相同的实例,不同复制机制的Topic
  • 测试场景三(是否同步落盘):相同的实例,不同落盘机制的Topic
  • 测试场景四(不同磁盘类型):相同的Topic,不同磁盘类型的实例
  • 测试场景五(不同分区数):相同的实例,不同分区数的Topic

测试环境

进行TPS测试前,您需要先构建如下的测试环境:

  1. 购买如表1所示实例,购买步骤请参考购买Kafka实例
    表1 实例参数

    名称

    代理数量

    规格

    是否开启SASL

    磁盘类型

    kafka-01

    3

    kafka.2u4g.cluster

    超高I/O

    kafka-02

    3

    kafka.4u8g.cluster

    超高I/O

    kafka-03

    3

    kafka.8u16g.cluster

    超高I/O

    kafka-04

    3

    kafka.12u24g.cluster

    超高I/O

    kafka-05

    3

    kafka.16u32g.cluster

    超高I/O

    kafka-06

    3

    kafka.2u4g.cluster

    超高I/O

    kafka-07

    3

    kafka.4u8g.cluster

    超高I/O

    kafka-08

    3

    kafka.8u16g.cluster

    超高I/O

    kafka-09

    3

    kafka.12u24g.cluster

    超高I/O

    kafka-10

    3

    kafka.16u32g.cluster

    超高I/O

    kafka-11

    3

    kafka.2u4g.cluster

    高I/O

    kafka-12

    3

    kafka.4u8g.cluster

    高I/O

    kafka-13

    3

    kafka.8u16g.cluster

    高I/O

    kafka-14

    3

    kafka.12u24g.cluster

    高I/O

    kafka-15

    3

    kafka.16u32g.cluster

    高I/O

    购买完成后,在实例详情页获取Kafka实例的内网明文连接地址。

  2. 购买实例后,创建如表2所示Topic,创建步骤请参考创建Kafka Topic
    表2 Topic参数

    名称

    是否同步复制

    是否同步落盘

    副本数

    分区数

    topic-01

    3

    30

    topic-02

    3

    30

    topic-03

    3

    30

    topic-04

    3

    3

    topic-05

    3

    12

    topic-06

    3

    100

  3. 获取测试工具。

    获取Kafka命令行工具2.7.2版本

  4. 购买客户端服务器。

    购买1台ECS服务器(区域、可用区、虚拟私有云、子网、安全组与Kafka实例保持一致,Linux系统),具体步骤请参考购买弹性云服务器

    购买完成ECS后,需要在ECS中完成以下配置:

    • 安装Java JDK,并配置JAVA_HOME与PATH环境变量。
      export JAVA_HOME=/root/jdk1.8.0_231 
      export PATH=$JAVA_HOME/bin:$PATH
    • 下载Kafka命令行工具2.7.2版本,并解压。
      tar -zxf kafka_2.12-2.7.2.tgz

测试脚本

./kafka-producer-perf-test.sh --producer-props bootstrap.servers={连接地址} acks=1 batch.size=16384 linger.ms=10 --topic {Topic名称} --num-records 10000000 --record-size 1024 --throughput -1 --producer.config ../config/producer.properties
表3 脚本参数说明

参数名称

说明

bootstrap.servers

购买Kafka实例后,获取的Kafka实例的地址。

acks

消息主从同步策略,acks=1表示异步复制消息,acks=-1表示同步复制消息。

batch.size

每次批量发送消息的大小(单位为字节)。

linger.ms

两次发送时间间隔。

topic

创建Topic中设置的Topic名称。

num-records

总共需要发送的消息数。

record-size

每条消息的大小。

throughput

每秒发送的消息数。

测试结果

以下介绍五个测试场景对应的测试结果。

测试场景如下:

  • 测试场景一(实例是否开启SASL):相同的Topic(30分区、3副本、异步复制、异步落盘),实例分为开启SASL和未开启SASL
  • 测试场景二(同步/异步复制):相同的实例(超高I/O、3个代理、未开启SASL),不同复制机制的Topic,生产者进程数为3时
  • 测试场景三(是否同步落盘):相同的实例(超高I/O、3个代理、未开启SASL),不同落盘机制的Topic
  • 测试场景四(不同磁盘类型):相同的Topic(30分区、3副本、异步复制、异步落盘),不同磁盘类型的实例
  • 测试场景五(不同分区数):相同的实例(超高I/O、3个代理、未开启SASL),不同分区数的Topic