查看 Redis 监控,发现网络 输入/ 输出速度较高,可能与预期不相符,甚至可能已经超过该规格的最大带宽。本文描述了排查 Redis 网络输入/输出速率高的问题。
当业务的访问量与预期带宽消耗不匹配,可以执行如下步骤进行排查。
-
是否存在非预期内的读写 QPS 突增
具体的可以查看如下指标,如读写 QPS,主要目的是查看业务上是否有非预期内的突增。Redis 作为更靠近业务系统的组件,通常在读写请求较大时,消耗的网络带宽也更大。通常从业务的角度来判断陡增的 QPS 更为直接有效。
-
是否存在大 Key 或热 Key
在 Redis 实例页面,点击性能分析,主要目的为分析大 Key,热 Key。大 Key 意味着 Redis 占用服务器的网络带宽也较多,而热 key 则意味着对某一热点 Key 的请求流量过度集中,会消耗占用大量 CPU 和网络资源。关于大 key 和热 key 的更多信息,可以参考文档[1]。
大 Key 分析展示,更多信息可以参考文档[2]
热 Key 分析展示,更多信息可以参考文档[3]
同时,还可以选择进行 RDB 分析,可以选择立即备份和选择历史备份来进行分析,更多信息可以参考文档[4]
当 Redis 实例流量使用率高时,通过上述的方法可以排查到具体原因,总结如下:
- 非预期内的读写 QPS 突增,需要业务测进行排查。
- 业务上有大 Key,热 Key。
- 业务所需网络带宽与当前实例类型不相符。
-
优化网络带宽
如果存在非预期的访问突增,请在业务系统中实现服务熔断或请求限流机制。
-
优化大 key,热 key
对于大 key,通常建议将大 key 进行拆分,减少对大 key 的访问,必要时删除不必要的大 key。 对于热 key,可以开启读写分离来分担读请求。或者在应用侧,将相同的 key 复制多份,将 key 迁移到不同的分片来分担读请求,这种方式需要与业务代码进行联动。
-
升级到更大的实例规格
经过上述步骤优化后,流量使用率依旧较高,可评估升级至更大的实例规格,以承载更大的网络流量。关于变更实例配置,可以参考文档[5]。
[1] https://www.volcengine.com/docs/6293/83053 [2] https://www.volcengine.com/docs/6293/83049 [3] https://www.volcengine.com/docs/6293/83050 [4] https://www.volcengine.com/docs/6293/127807 [5] https://www.volcengine.com/docs/6293/71564
如果您有其他问题,欢迎您联系火山引擎技术支持服务