Skip to main content

性能测试

AutoMQ 基于 S3 共享存储的存算分离架构,在与 Apache Kafka 保证 100% 兼容性的基础上提供了极速弹性、低成本、高性能等优势特性。AutoMQ 相比 Apache Kafka 可以在冷读时提供更好的吞吐性能以及提供更高的极限吞吐。本文档介绍如何对 AutoMQ 集群进行性能测试。

前置条件

进行集群性能测试前,需要满足如下条件:

  1. 完成 AutoMQ 集群的安装部署 ,您可以参考以下方式安装部署 AutoMQ:
  1. 准备必要的压力机资源, 建议在相同的 VPC 网络下创建一定数量的压力机,确保压力机的网络吞吐和 CPU 不会成为测试场景的瓶颈。

测试场景

场景1:Tail Read

Tail Read,即“追尾读”或“热读”,测试 Producer 与 Consumer 间位点差距不大的场景。热写热读场景主要关注如下指标:

  • 读写吞吐: 实时读写场景是 Kafka 的典型场景,在相同硬件资源的基础上吞吐越高、性能越好。

  • 写入和 E2E 耗时: 在相同网络吞吐的条件下消息写入耗时越低越好,E2E 耗时(消息从生产到消费的耗时)越低越好。

在 Tail Read场景下,Producer 发送的消息在被写入 Broker 后立即就会被 Consumer 消费掉,此时 Consumer 消费到的消息直接来自于 AutoMQ Log Cache,无需读取对象存储,资源消耗较少。

场景 2:Catch-Up Read

Catch-Up Read,即“追赶读”或“冷读”,测试 Consumer 消费位点远落后于 Producer 位点的场景。在该场景下,首先将暂停 Consumer,在积攒一定大小的消息后,再重新开始消费。此时 Consumer 消费的消息将从对象存储中读取,并由 Block Cache 进行预读与缓存。

在该测试场景下,主要关注以下两方面指标:

  • 追赶读速度是否最够快 。观察每个 Consumer Group 的消费速度是否超过了 Producer 的写入速度,只有超过了,才意味着 Consumer 可以追上 Producer。

  • 追赶读期间写入流量是否受到影响 。观察追赶读期间 Producer 发送消息的流量是否有所下降,以及发送延迟是否升高。

使用 Kafka CLI 进行测试

用户可通过 Kafka CLI 工具,运行 kafka-producer-perf-test.sh 和 kafka-consumer-perf-test.sh 进行性能测试。

如果此前的 AutoMQ 集群参考Linux 主机部署多节点集群▸部署,则获取的集群 Bootstrap 地址是类似 “192.168.0.1:9092,192.168.0.2:9092,192.168.0.3:9092 ”。

tip

请根据部署的实际配置,将下方的 bootstrap-server 地址更换成实际集群的地址。

创建 Topic


docker run automqinc/automq:latest /bin/bash -c "/opt/kafka/kafka/bin/kafka-topics.sh --create --topic test-topic --bootstrap-server 192.168.0.1:9092,192.168.0.2:9092,192.168.0.3:9092"

发送消息


docker run automqinc/automq:latest /bin/bash -c "/opt/kafka/kafka/bin/kafka-producer-perf-test.sh --topic test-topic --num-records=1024000 --throughput 5120 --record-size 1024 --producer-props bootstrap.servers=192.168.0.1:9092,192.168.0.2:9092,192.168.0.3:9092"

消费消息


docker run automqinc/automq:1.0.4 /bin/bash -c "/opt/kafka/kafka/bin/kafka-consumer-perf-test.sh --topic test-topic --show-detailed-stats --timeout 300000 --messages=1024000 --reporting-interval 1000 --bootstrap-server=192.168.0.1:9092,192.168.0.2:9092,192.168.0.3:9092"

使用 AutoMQ 压测工具进行测试

AutoMQ 团队针对社区提供的 Kafka性能测试 CLI 工具进行改进,发布了一键压测工具,该压测工具参考OpenMessaging Benchmark 框架,具备如下优势:

  • 支持单进程多客户端,提升压测密度和效率: 相较于 Apache Kafka 自带的 kafka-producer-perf-test.sh 与 kafka-consumer-perf-test.sh 脚本,automq-perf-test.sh 支持了在一个进程中同时启动多个 Producer、Consumer,并向多个 Topic 收发消息,更加贴近实际场景,使用起来更加方便。

  • 一键运行,无需分布式部署: 相较于 OpenMessaging Benchmark 测试框架,不再需要分布式部署多个 Worker,单机即可一键执行测试。在不特别大规模的测试场景下,部署与使用起来更加方便。

  • 提供 Catch Up Read 测试场景: 除此之外 automq-perf-test.sh 脚本还支持了更加复杂的冷读测试场景——可以启动多个 Consumer Group,并且每个 Group 分别从不同的位点开始消费,这样可以避免在冷读时复用 Cache,进而测试更加极端场景下的冷读性能。

  • 开放和中立: 该测试脚本仅依赖 Apache Kafka Client,可以支持对 Apache Kafka、MSK 等兼容 Kafka 协议的流系统进行性能测试。

性能调优和技术支持

AutoMQ 集群的性能取决于计算资源的规格、内核参数调优等多方面因素。面向生产场景的性能调优和基线标定相对复杂。

您可以通过此处表单联系 AutoMQ 团队获取性能测试报告以及生产场景的性能调优最佳实践。