全部产品
Search
文档中心

轻量消息队列(原 MNS):限流策略

更新时间:May 14, 2026

轻量消息队列(原 MNS)对超过限流阈值的请求执行限流策略,从而避免底层资源承受过高压力。了解限流策略有助于合理规划消息收发频率,并在触发限流时采取正确的应对措施。

限流行为

当流量接近或达到限流阈值时,服务端会根据实时资源水位自动弹性调整限流阈值,在多数场景下,可动态支撑更高并发请求且用户无感知。若触发临时限流(如突发峰值激增、集群资源瓶颈等),系统将在自动扩容完成后恢复流量处理能力并同步提升限流阈值。

当触发限流报错时,系统将启动反压机制,此时超出阈值的请求会在服务端被短暂挂起后返回 429(TooManyRequests)错误,挂起时长由服务端根据实时负载动态调整,通常在 10~500 毫秒之间,最大不超过 5 秒。避免系统因过载而影响整体性能和稳定性。

错误码

触发限流策略后,轻量消息队列(原 MNS)服务端会返回如下错误码信息。

HTTPS 状态码

错误码 Code

错误描述信息 Message

429

TooManyRequests

The request is denied by cluster flow limiter for too many requests.

限流阈值说明

队列 消费模式下的异常消费限流策略

在标准的队列消费模式中,客户端在成功处理消息后,应在服务端删除该消息。如果客户端大量出现“只接收消息,但不发送删除消息请求”的非标准行为,系统将视其为异常消费,并触发限流机制以保障系统稳定性。限流后,客户端接收新消息的速度会大幅降低。

触发限流的阈值(满足任一条件即可):

  • 持续时间:该异常消费持续超过 30 分钟。

  • 消息数量:累计接收但未删除的消息总量达到 5000 条。

  • 流量速率:接收但未删除的瞬时速率超过 1,000 TPS。

大流量请求的限流策略

每个主账号每个地域限流阈值默认值:20000 TPS。如果流量已超过 20000 TPS,可登录配额中心控制台申请提高单地域 TPS 上限,操作步骤请参见创建配额提升申请

请求次数计数说明如下:

  • 每调用 API 接口 1 次,计为 1 次请求。

  • 批量发送场景 TPS 计算:当使用 BatchSendMessage 接口请求某队列时,BatchSendMessage 的 TPS = BatchSendMessage 每秒实际请求次数×接口中的消息条数。例如,BatchSendMessage 接口 1 秒钟实际请求次数是 100,接口中包含 10 条消息,则占用单个队列 TPS=100×10 = 1000。

  • 批量消费场景 TPS 计算:当使用 BatchReceiveMessage 接口请求某队列时,BatchReceiveMessage 的 TPS = BatchReceiveMessage 每秒实际请求次数(与批量消息条数无关)。例如,BatchReceiveMessage 接口 1 秒钟实际请求次数是 100,接口中包含 10 条消息,则占用单个队列 TPS=100。

避免限流影响

为避免限流策略对业务的影响,建议关注以下两方面:

  • 合理规划流量,提前沟通高峰流量:若有大规模流量增长预期,且 TPS 超过配额中心控制台可申请最大值,请提交工单联系技术支持,以预留更多资源,避免触发限流。

  • 监控和告警:建议接入轻量消息队列(原 MNS)监控工具,通过云监控控制台(云监控控制台 > 产品监控 > 消息服务 MNS)查看各队列/主题的实时 TPS 用量,及时发现接近限流阈值的情况。

常见问题

业务是否仅支持 20000 TPS?

不是。20000 TPS 是默认保障值,实际支持的 TPS 可能更高,具体取决于集群负载和弹性能力。

为什么有时超过 20000 TPS 会报错,有时不会?

服务端在判断是否触发限流时,存在一定的弹性余量。以默认限流阈值 20000 TPS 为例,实际触发限流的 QPS 并非严格等于 20000,可能略高(例如 20000~20200,注意这个范围仅示例,实际范围是动态调整的)。但该弹性余量并非固定值——当集群负载较高时,弹性余量会自动收窄,极端情况下可降为 0,即达到限流阈值即立即触发限流。

强烈建议配置API最大值或API水位告警,避免触发限流导致收发消息失败而影响业务。参考文档: 创建告警规则

API QPS每分钟最大值

MaxApiQpsPerUser

API QPS水位百分比

WatermarkOfApiQps

管控API QPS每分钟最大值

MaxConsoleApiQpsPerUser

管控API QPS水位百分比

WatermarkOfConsoleApiQps

限流报错是否会影响业务?

限流是系统过载保护机制,目的是防止集群因突发流量过载而影响整体稳定性。建议客户端在收到 429 报错时采取指数退避重试策略(如间隔 1s、2s、4s 逐步递增),避免立即大量重试加剧压力。