作为缓存数据库,Redis 通常需要执行较多的数据存取操作,这些操作会带来较大的网络带宽消耗。缓存数据库 Redis 实例规格不同,默认带宽也不同,当业务流量超过实例的默认带宽时,应用服务的数据访问性能会受到影响。本文提供了一些合理使用实例带宽的优化建议供您参考。
缓存数据库 Redis 版支持带宽限流机制,当业务流量超过实例的默认带宽时,系统会对每秒超出带宽的流量做堆积处理,如果流量堆积持续时间过长,可能会导致客户端超时,业务数据访问性能会受到影响,例如,P99请求响应延迟或最大请求响应延迟等增加,或在写入数据时提示 Error reading from the server: Connection reset by peer
等报错。业务流量降低至默认带宽限制以下后,之前堆积的流量会自动被 Redis 数据节点处理。
缓存数据库 Redis 版支持以可视化的图像形式查看实例不同节点上的性能监控数据。为帮助您全面掌握实例的带宽使用情况,快速定位流量使用相关问题,避免出现带宽限流导致的性能问题,建议您密切关注网络输入带宽利用率和网络输出带宽利用率监控指标。
此外,建议您将上述指标的告警触发条件的阈值设置为 80%,即当带宽利用率在监控周期内大于等于 80% 时触发告警,帮助您及时感知流量使用上升趋势,避免触发带宽限流。
缓存数据库 Redis 版支持在不变更实例规格的情况下单独增加实例读写带宽。增加带宽不会对业务造成影响,帮助您在尽量不影响线上业务的基础上争取更多的时间来排查问题。修改带宽的具体操作步骤,请参见修改带宽。
说明
大 Key 和热 Key 会占用大量的 CPU 和网络带宽,出现实例负载不均衡数据倾斜问题,导致其他请求超时无法正常访问,不会仅削弱 Redis 自身性能,还会影响服务器上其他服务或应用。
因此,当业务访问量与预期带宽消耗不均衡(例如带宽利用率的变化趋势与读写 QPS 的变化趋势明显不一致)时,您可以通过大 Key 分析、热 Key 分析或 RDB 分析等功能,帮助快速发现实例中的大 Key 和热 Key,了解 Key 在内存中的占用、分布、过期时间等信息,并根据分析结果对大 Key 或热 Key 进行针对性的优化。例如,将热 Key 分散到不同的服务器中、将大 Key 拆分、减少对大 Key 的访问、删除不必要的大 Key 等。
缓存数据库 Redis 版默认将所有读写请求都发送到主节点进行处理,但当网络输入带宽利用率数值较低,而网络输出带宽利用率数值较高时,表明实例中的写请求较少而读请求较多,会对主节点的读带宽造成较大压力。此时您可以开启实例的读写分离模式,将部分或全部读请求发送至从节点(即设置读写分离参数值为 read_primary_node_and_secondary_nodes
或 read_secondary_nodes_only
),帮助分摊主节点的读带宽压力。设置读写分离的具体操作步骤,请参见设置读写分离。
说明
若经过上述优化后,带宽利用率仍然较高,那么您需要评估是否需要通过垂直扩容(即升级节点规格)或水平扩容(即增加分片数)来匹配您的业务负载。您可以根据实例架构选择合适的扩容方案:
启用分片集群的 Redis 实例
您可以选择升级节点规格(提升单分片带宽)或增加分片数(提升实例总分片带宽)的方式来增加实例整体带宽。
不启用分片集群的 Redis 实例
不启用分片集群实例仅包含一个分片,因此仅支持通过升级节点规格来提升实例带宽。
说明
正式变更实例配置前,建议您先购买一个按量付费实例,用于测试升级后的目标配置是否能满足业务负载需求,测试完成后可立即删除该实例。删除实例的具体操作步骤,请参见删除实例。