tencent cloud

消息队列 RocketMQ 版

动态与公告
新功能发布记录
公告
产品简介
产品概述
什么是消息队列 RocketMQ 版
产品优势
应用场景
产品系列
开源对比
高可用
使用限制
开服地域
基本概念
产品计费
计费概述
价格说明
计费示例
切换集群计费模式(5.x)
续费说明
查看消费明细
退费说明
欠费说明
快速入门
快速入门概述
准备工作
步骤1:创建 RocketMQ 资源
步骤2:使用 SDK 收发消息(推荐)
步骤2:运行 RocketMQ 客户端(可选)
步骤3:查询消息
步骤4:销毁资源
用户指南
使用流程指引
配置账号权限
新建集群
命名空间管理
配置 Topic
配置 Group
连接集群
管理消息
管理集群
查看监控和配置告警
跨集群复制消息
实践教程
RocketMQ 常见概念命名规范
RocketMQ 客户端实践
RocketMQ 性能压测和容量评估
使用社区版 HTTP SDK 接入
客户端风险说明和更新指南
关于 RocketMQ 4.x 集群角色(Role)相关云 API 迁移指引
迁移指南
有感迁移
无感迁移
开发指南
消息类型
消息过滤
消息重试
POP 消费模式(5.x)
集群消费与广播消费
订阅关系一致性
限流
API 参考(5.x)
History
API Category
Making API Requests
Topic APIs
Consumer Group APIs
Message APIs
Role Authentication APIs
Hitless Migration APIs
Cloud Migration APIs
Cluster APIs
Data Types
Error Codes
API 参考(4.x)
SDK 参考
SDK 概述
5.x SDK
4.x SDK
安全与合规
权限管理
云 API 审计
删除保护
常见问题
4.x 实例常见问题
服务协议
服务等级协议
联系我们
文档消息队列 RocketMQ 版实践教程RocketMQ 性能压测和容量评估

RocketMQ 性能压测和容量评估

PDF
聚焦模式
字号
最后更新时间: 2026-01-23 17:02:15
性能测试和容量评估是保证系统整体稳定性的一个基础保证手段,但是如何实施一场有效压测并不是一个简单的事情,我们建议采用以下压测方案,进行压测前,首先应该结合业务场景明确本次压测的目的,然后确定压测具体方案,包括压测对象,压测场景模拟,工具选择以及应该关注哪些指标等,最后分析压测是否达到预期和明确购买合适的规格。


明确压测目的

如上图所示,针对 RocketMQ 的业务场景,一般关注压测发送消息还是压测消费。
如果压测发送消息,主要关注发送速率,耗时和成功率,以及触发峰值限流后应用的表现。
如果压测消费消息,主要关注消费速率,耗时和成功率,失败后的重试策略,以及堆积消息延迟对业务的影响。

分析压测对象

压测发送消息的场景,主要压测对象为 RocketMQ 实例,需要关注 RocketMQ 实例的发送耗时和成功率,以 RocketMQ 5.x 实例为例,实例默认都会开启分布式限流,防止涌入过大流量导致集群被压垮,所以关注限流对业务的影响。
压测消费消息的场景,主要压测对象为下游的消费者应用,需要关注业务下游的消费消息的能力,主要指标是消费处理耗时和消费并发线程数,是否消费超时,是否有异常导致的重试,和是否产生消息堆积。

模拟压测场景

针对发送消息的场景,通常两种方式,第一种可以使用 Apache RocketMQ 开源代码自带的压测脚本来制造压测流量,第二种也可以模拟业务流量,通过业务逻辑代码使用生产者应用进行全链路压测。
通常,我们建议先通过开源代码自带的压测脚本来快速的摸底进行压测,快速拿到 RocketMQ 实例的一些基准指标,做到心里有底,确保RocketMQ 实例本身是达标的,然后再结合业务模型,通过模拟压测业务流量,设置合理的并发数,确保最终在压测结果可以满足业务的需求。
针对消费消息的场景,通常也有两种方式,第一种可以使用 Apache RocketMQ 开源代码自带的压测脚本,订阅压测的 topic,默认收到消息后立即确认消息,来确认 RocketMQ 实例提供的消费能力是足够的。第二种也是通过全链路的压测,由上游消息发送方发送符合消费方业务代码要求的消息格式,确保消费业务代码可以被压测覆盖到,甚至将压测流量进一步传导到下游。

分析压测指标

发送指标
关注发送速率,发送耗时和发送成功率,以及是否触发限流,以及限流后对业务的影响或者消息重试策略。
消费指标
关注消费速率,消费业务耗时,消费延迟和消费成功率,以及消息堆积和延迟对业务的影响。

常见问题分析

1.如何解决发送速率压不上去?

决定发送速率的核心因素有两个,一个是发送耗时,一个是发送并发度,假如平均发送耗时是 5ms,并发度是 1 的话,则发送速率是 200 TPS;所以如果遇到压测目标不达标的时候,首先确认一下发送耗时,例如是不是网络走了公网,或者经过了代理,发送耗时偏高; 如果发送耗时符合预期,则重点排查并发度是否满足,发送方的并行执行的线程数量是否足够,发送方的节点的负载是否正常,更上层是否有锁等因素影响。

2.如何高效模拟流量的压测下游业务方?

经常为了达到好的压测效果,需要压测流量尽可能的接近真实的业务,为了模拟流量,除了全链路压测以外,还可以通过重置消费位点的方式,重放历史消息,来给下游业务方高效的制造流量,这样就不需要上游业务来反复的制造发送流量。

3.如何分析触发限流的原因?


因为 RocketMQ 5.x 实例默认开启了限流,如果压测触发了限流,重点分析以下几个原因:
1. 存在“微突发”的场景,例如我们的监控是分钟级粒度的监控,可能所有的流量集中在前 1 秒发起,实际我们限流令牌窗口是 10秒更新一次窗口,这样就会导致分钟级监控看没有超限流值,实际上10 秒粒度却会被限流。
2. 消息体过大,因为限流是按照 4KB 一条消息折算,例如 100KB 的消息,将会折算为 25 条消息,进行限流,所以限流值和生产消息条数并不是一对一的。
3. 限流比例调整不合适,我们提供了可以调整发送和消费限流配额比例,默认为 5:5 ,最多可以调整为 2:8 或者 8:2,所以如果触发了限流,也要检查一下配置的限流配额比例是否合理。


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈