限流策略

更新时间:2025-02-19 07:48:04

轻量消息队列(原 MNS)对超过限流阈值的请求执行限流策略,从而避免底层资源承受过高压力。

限流行为

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

当触发限流报错时,系统将启动反压机制,此时超出阈值的请求会在服务端被暂时挂起约500毫秒后返回,避免系统因过载而影响整体性能和稳定性。

错误码

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

HTTP状态码

错误码Code

错误描述信息Message

HTTP状态码

错误码Code

错误描述信息Message

429

TooManyRequests

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

限流阈值说明

每个主账号每个地域限流阈值默认值:20000 TPS。如果流量已超过20000 TPS,可提交工单提高默认限流阈值。

限流阈值的特殊说明如下:

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

  • 限流阈值是服务质量基线:该值代表服务承诺的能力,而非严格上限。

  • 动态阈值与集群资源强关联:实际承载能力随集群负载弹性变化,极端场景下可能出现短暂限流,此现象反映系统正在执行保护性熔断及资源扩容。

  • 自动恢复机制:触发限流后无需人工干预,资源扩容与阈值上调均由自动化平台完成。

避免限流影响

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

  • 合理规划流量,提前沟通高峰流量:如果您预计会有大规模流量增长,请提交工单与我们联系,我们将为您预留更多资源,避免触发限流。

  • 监控和告警:建议您接入轻量消息队列(原 MNS)监控工具,实时了解流量和限流状态,及时采取应对措施。

常见问题

我的业务是否只能支持20000 TPS?

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

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

这与集群的实时负载有关。当资源充足时,系统会弹性支撑更高TPS,当资源紧张时,可能会触发限流。

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

限流报错是系统保护机制的一部分,目的是防止集群过载导致更大范围的服务中断。我们会尽快扩容以恢复服务,建议您在收到限流报错时稍作等待或重试。

为什么有时会触发限流,有时不会?

系统的弹性能力和限流行为与以下因素密切相关:

  • 集群当前负载:如果集群资源充足,系统会尽力支撑更高的TPS。

  • 流量波动情况:突发流量可能导致短时间内资源紧张,从而触发限流。

  • 扩容速度:自动扩容需要一定的时间,在此期间可能会出现短暂的限流现象。

因此,是否触发限流并非固定不变,而是取决于实时的集群状态和流量情况。

  • 本页导读 (1)
  • 限流行为
  • 错误码
  • 限流阈值说明
  • 避免限流影响
  • 常见问题
  • 我的业务是否只能支持20000 TPS?
  • 为什么有时超过20000 TPS会报错,有时不会?
  • 限流报错是否会影响我的业务?
  • 为什么有时会触发限流,有时不会?