文档首页/ 分布式缓存服务 DCS/ 常见问题/ 监控告警/ 触发流控(限流)的原因和处理建议
更新时间:2025-04-10 GMT+08:00

触发流控(限流)的原因和处理建议

什么是流控

DCS针对实例每个节点做了带宽消耗的限制,当某个节点短时间内消耗的带宽超过该节点的带宽限制(最大带宽)时,该节点会暂时不对客户端命令进行处理,以达到控制流量的目的,即产生流控。因此,Redis产生流控,说明Redis在周期内的使用流量超过该实例规格的最大带宽。

实例默认的最大带宽,可以查看实例规格中对应实例类型的“基准/最大带宽”。如果实例进行了调整带宽,最大带宽请以调整后的带宽为准。

如何判断是否产生流控

判断是否产生流控,请通过查看流控次数的监控指标,该指标大于0时,表示当前已使用的带宽超过最大带宽限制,产生流控。

带宽使用率不高时,也有可能有限流,因为带宽使用率是上报周期实时值,一个上报周期检查一次。而流控检查是秒级的,有可能存在上报周期间隔期间,流量有秒级冲高,然后回落,待上报带宽使用率指标时已恢复正常。

流控的影响

Redis产生流控,会暂时停止响应该节点客户端发来的请求(DCS侧不会丢弃暂停的请求,而是跳过此次处理待下次处理),从业务角度可能会造成业务的延迟增大,客户端连接异常等问题。

对流控的处理建议

对于主备实例:

  • 如果实例一直有流控但是带宽使用率不高,这说明可能存在业务微突发问题,或者大Key热Key问题,建议对实例进行自动诊断分析,优先排除大Key热Key问题。
  • 如果带宽使用率居高不下,说明带宽可能存在超限风险,需要扩容实例带宽。

对于集群实例:

  • 仅有单个或少量几个分片出现流控,则多数为该分片存在大Key热Key问题。
  • 所有或大多数分片同时出现流控或者带宽使用率高的问题,这说明实例的带宽达到了瓶颈,建议扩容实例带宽。