排查Redis实例带宽使用率高的问题
概述
Redis实例作为更靠近应用服务的数据层,通常会执行较多的数据存取并消耗网络带宽。不同的实例规格对应的最大带宽有所不同,当超过该规格的最大带宽时,会产生流控,流控会导致连接被丢弃,从业务角度可能会造成业务的延迟增大,客户端连接异常等问题。本节讲述如何排查Redis实例带宽使用率高的问题。
操作步骤
- 查询带宽使用率。
查询实例在指定时段的带宽使用率。具体操作请参见查看监控数据。
通常来说,“网络瞬时输入流量”和“网络瞬时输出流量”快速上升,并持续大于实例最大带宽的80%时,需引起注意,可能流量不足。
需关注的监控指标为带宽使用率如下图。带宽使用率的计算公式:带宽使用率=(网络瞬时输入流量+网络瞬时输出流量)/(2*最大带宽限制) * 100%。
图1 带宽使用率示例
其中,带宽使用率超过100%,不一定导致限流,有没有被流控需要看流控次数指标。
带宽使用率没有超过100%,也有可能有限流,因为带宽使用率是上报周期实时值,一个上报周期检查一次。流控检查是秒级的,有可能存在上报周期间隔期间,流量有秒级冲高,然后回落,待上报带宽使用率指标时已恢复正常。
- 优化带宽使用率。
- 当业务的访问量与预期带宽消耗不匹配,例如带宽使用率的增长趋势和QPS的增长趋势明显不一致(可结合网络瞬时输入流量和网络瞬时输出流量,分析业务是读业务和还是写业务导致的流量上涨)。对于单个节点带宽使用率上涨,您可以通过缓存分析功能,发现实例中存在的大Key,具体操作请参见大key分析。对大Key(通常大于10 KB)进行优化,例如将大Key拆分、减少对大Key的访问、删除不必要的大Key等。
- 经过上述步骤优化后流量使用率依旧较高,可评估升级至更大内存的规格,以承载更大的网络流量。具体操作请参见变更实例规格。也可以单独购买实例带宽,请参考调整DCS实例带宽。
在正式升级实例的规格前,您可以先购买一个按需付费的实例,测试要升级到的目标规格是否能够满足业务的负载需求,测试完成后可将其释放。释放实例请参考删除实例。