通过离线全量Key分析功能来分析云数据库 Tair(兼容 Redis)的备份文件,可以快速发现实例中的大Key,帮助您掌握Key在内存中的占用和分布、Key过期时间等信息,为您的优化操作提供数据支持,帮助您避免因Key倾斜引发的内存不足、性能下降等问题。
该功能由CloudDBA的缓存分析提供。
注意事项
单副本实例类型或磁盘型实例不支持该功能。
如果实例规格已发生变更,则不支持分析实例变更前的备份文件。
离线全量Key分析功能只支持分析Redis开源版数据结构和以下Tair自研数据结构:TairString、TairHash、TairGIS、TairBloom、TairDoc、TairCpc、TairZset,若存在其他Tair自研数据结构会导致分析任务失败。
操作步骤
访问实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏,单击 。
离线全量Key分析页签默认展示最近一天缓存分析结果列表,您可以根据需求选择其他时间段。
在离线全量Key分析页签,单击页面右侧的立即分析。
在弹出的对话框中,设置分析的节点与方式。
参数
说明
选择分析节点
选择需要执行缓存分析的节点ID。
说明您可以选择分析整个实例,也可以只选中某个节点进行分析。
分析方式
您可以按照界面提示,选择不同的备份文件。
使用上一个备份文件:分析当前最新的备份文件。
选择历史备份文件:允许选择并分析任意历史备份文件。
新建备份, 并使用最新的备份进行分析:立即新建一次备份,待备份完成后对其进行分析,该方式可分析实例当前的状态。
说明在分析已存在的备份文件时,请确认备份文件的时间点,是否符合预期。
分隔符
根据需要,输入用于识别Key前缀的分隔符。当分隔符为默认的
:;,_-+@=|#
时,不需要输入。单击确定。
系统执行分析并展示分析状态,您可以单击刷新以更新分析状态。
找到已完成的分析任务,单击其操作列的详情展示详细的分析结果。
基本信息:展示实例基本属性和缓存分析方法等信息。
相关节点:展示实例内各节点的内存情况和Key统计信息。
说明当实例为集群或读写分离架构,且选择的分析节点为整个实例时,详情页才会展示相关节点信息并提供节点选择的功能。
详情:展示实例或节点的Key内存占有情况、Key数量分布情况、Key中元素的内存占用和分布情况、Key过期时间分布、大Key排名等信息。
常见问题
Q:若使用RAM账号,操作时提示权限不足怎么办?
A:请对RAM账号进行授权并重试,更多信息请参见常见自定义权限策略场景及示例。
Q:在同一个实例中,为什么执行离线分析任务的速度时快时慢?
A:离线分析任务是异步任务,分析速度还与CloudDBA的当前总任务数有关,当总任务数较多时,该离线分析任务需排队等待,分析任务的耗时就会变长。
Q:如何处理报错
decode rdbfile error: rdb: unknown object type 116 for key
?A:该报错表示实例中存在非标准的Bloom结构,暂不支持分析。
Q:如何处理报错
decode rdbfile error: rdb: invalid file format
?A:该报错表示所选的备份文件无效,请检查实例是否在该备份时间点后进行了变配;或者实例是否开启了透明数据加密TDE(该功能无法分析已加密的信息)。
Q:如何处理报错
decode rdbfile error: rdb: unknown module type
?A:该报错表示备份文件中存在Tair自研数据结构,暂不支持分析。
Q:如何处理新建备份, 并使用最新的备份进行分析后报错
XXX backup failed
?A:该实例当前存在正在执行的BGSAVE或BGREWRITEAOF命令,导致创建用于缓存分析任务的备份时出现了失败的情况。建议您选择业务低峰期新建备份, 并使用最新的备份进行分析或者选择历史备份文件进行分析。
Q:为什么缓存分析结果展示的Key内存占有会小于实际已用内存?
A:因为缓存分析仅解析Key与其Value在RDB中序列化后占用的大小,这仅占实例已用内存的一部分。除此之外,实例已用内存还包含了如下内存占用:
在JeMalloc分配内存后,字节对齐部分所占用的内存大小,以及Key与其Value所对应的Struct、指针大小等。例如在2.5亿个Key时,字节对齐、Struct和指针,这三部分的内存大小加起来约有2~3 GB。
客户端输出缓冲区、查询缓冲区、AOF重写缓冲区和主从复制的Backlog等。
相关API
API接口 | 说明 |
创建缓存分析任务。 | |
查询缓存分析任务详情。 | |
查询缓存分析任务列表。 |