腾讯云分布式缓存数据库 内存使用率过高

这篇说明腾讯云Redis内存使用率过高的现象、原因及处理步骤,包括数据量增多、未设置TTL、大Key等导致内存占用升高,并提供扩容、调整驱逐策略与拆分大Key等解决方法。 – 排查方法:通过系统监控查看内存使用率、Key总数与驱逐数等指标趋势。 – 解决方案:数据量增多时扩容实例;未设TTL时调整maxmemory-policy和hz参数。 – 大Key问题:使用DBbrain内存分析功能定位并拆分大Key。

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

一、现象描述

·现象1:收到内存使用率过高的告警提醒消息。


·现象2:在 腾讯云分布式缓存数据库控制台 的系统监控页面,查看到内存使用率、Key 驱逐数、P99响应时延监控指标均突增。

·现象3:程序写入数据提示 command not allowed when used memory > 'maxmemory'错误信息。

二、分布式缓存数据库内存占用

分布式缓存数据库通常占用内存的数据包含以下几类:

·对象内存:用户数据区,即实际存储的 Value 信息。

·缓冲内存:包括客户端输入和输出缓冲区,以及主从同步复制缓冲区。

注意:说明:

注意:当执行客户端 Range 类操作或大 Key 时,Input buff 与 Output buff 占用的内存会增大,影响缓冲区,甚至导致内存溢出 OOM(Out Of Memory)。

·内存碎片:大量的更新操作,例如 append、setrange;大量的过期键删除,释放的空间无法得到有效利用。

·链路内存: 创建子进程内存的消耗,一般这部分的消耗会比较小。

三、处理步骤

序号 可能原因 排查方式 解决方法
1 写入数据量增多引起内存占用升高。未设置 Key 的 TTL 策略。 1. 在 登录腾讯云分布式缓存数据库控制台 ,单击实例 ID 进入实例详情页面。2. 选择系统监控页签,查看实例监控指标内存使用率、Key 总个数、Key 过期数、Key 驱逐数对应的监控视图,分析内存占用与 Key 数量波动趋势是否一致。 如果内存占用率与 Key 总个数是正比例增加。内存可能为业务正常写入的数据占用而增加。请评估业务需求并对分布式缓存数据库实例及时扩容。具体操作,请参见 变更实例规格。内存可能因未设置合理的过期驱逐策略以及过期 Key 删除频率而导致 Key 数量堆积而增加。过期驱逐策略设置不合理,容易导致无效 Key 占用过多的空间。修改 Key 的过期时间、驱逐策略及过期删除频率相关参数,请在控制台参数配置页面重新配置maxmemory-policy参数与hz参数。具体操作,请参见 管理实例参数。 Key 过期删除频率设置过高,即 hz 数值增大,将会占用较多 CPU 资源。请根据业务实际情况分析调整,hz 值不宜过大。
2 写入大 Key 引起输入缓冲区溢出。读取大 key、请求大量命令返回结果、或者执行 monitor 命令引起输出缓冲区溢出。 借助数据库智能管家 DBbrain 的诊断优化功能分析内存倾斜问题。具体信息,请参见 内存分析。 针对异常大 Key 进行 Value 值拆分和优化。具体方法,请参见 热 Key 与大 key。
赞 (0)
上一篇 4天前
下一篇 4天前