腾讯云分布式缓存数据库 出流量过高

这篇分析腾讯云Redis出流量超限与响应时延变大的原因,包括大Key、pipelines、批量查询及规格不足,并给出排查与解决方法。 大Key排查:通过DBbrain分析并优化,建议拆分大Key或使用hash结构。 pipelines与批量查询:减少命令请求数,单次操作Key建议不超过50个。 升级规格与带宽:增加副本或分片,调整带宽至最大以缓解流量压力。

相关产品
腾讯云分布式缓存数据库(兼容 Redis) 产品页,含版本规格、价格与购买入口。

一、现象描述

·现象1:出流量指标达到上限。用户收到出流量限流触发告警的消息。


·现象2:响应时延变大。

二、可能原因

·由大 Key 引发。

若请求 Key 的 Value 值较大,则易造成出流量过高的问题。

·pipelines 请求。

Pipeline 技术是把多次请求打包成一次请求发送给数据库服务端处理,在接收完所有命令执行结果后再返回给上层业务。如果一次请求较多,便会造成出流量过高。更多信息,请参见 Redis pipeline 页面介绍。

·批量查询,如:mget、hmget 或 hgetall等。

单次批量查询 Key 的数量较多,引起出流量过高。

·实例配置规格不足。

业务量上涨,数据量增大,实例配额出流量达到上限,无法满足当前业务流量需求。

三、步骤1:排查大 Key 问题

1. 登录 腾讯云分布式缓存数据库控制台,通过数据库智能管家 DBbrain 的诊断优化功能进行大 Key 排查,并创建大 Key 分析任务,根据分析报告,优化大 Key。具体操作,请参见 内存分析。

2. 若存在大 Key,在不影响业务的前提下,减少对大 Key 访问。如果是 value 过大,可以将对象拆分成多个 key-value,将操作压力平摊到多个 Redis 实例;如果是 Key 过多,可以参考 hash 结构存储,将多个 Key 存储在一个 hash 结构中。

注意:说明:

注意:为防止产生大 Key,设计 Value 时,建议参考如下建议。

四、步骤2:检查业务是否使用了 pipelines

排查业务代码逻辑,建议不使用 pipeline 或者减少每次 pipelines 中的命令请求个数。如果无法确认,请 提交工单 联系腾讯云助手协助进行排查。

五、步骤3:排查单次查询 Key 的数量

·登录 腾讯云分布式缓存数据库控制台,通过数据库智能管家 DBbrain 的诊断优化功能,分析性能指标 Key 请求数量及 mget 请求数的变化趋势,排查是否存在 Key 请求突增的现象。具体操作,请参见 性能趋势。

·通常,建议单次操作的 Key 的个数或者元素个数的大小不超过50个。如果 value 比较大,则需要继续减少。

六、步骤4:升级实例规格

1. 增加副本数量,并开启副本只读,分摊读负载,把当前实例的读请求转移在副本只读节点上,实现读取能力的弹性扩展,改善网络流量性能问题。具体操作,请参见 开关读写分离。

2. 增加分片数量,系统将分配更多的标准带宽。若实例为标准架构,请优先升级标准架构为集群架构,提升 CPU 处理能力。具体操作,请参见 升级实例架构。升级集群架构之前需要检测兼容性,请参见 标准架构迁移集群架构检查。

七、步骤5:调整带宽

如果升级实例规格之后,出流量依然很高,则将带宽调至最大。增加带宽目前免费,具体操作,请参见 带宽调整。

赞 (0)
上一篇 4天前
下一篇 4天前