全部产品
Search
文档中心

云数据库 Redis:离线全量Key分析

更新时间:Jul 22, 2024

通过离线全量Key分析功能来分析Redis的备份文件,可以快速发现实例中的大Key,帮助您掌握Key在内存中的占用和分布、Key过期时间等信息,为您的优化操作提供数据支持,帮助您避免因Key倾斜引发的内存不足、性能下降等问题。

该功能由CloudDBA缓存分析提供。

注意事项

  • 磁盘型实例不支持该功能。

  • 如果实例规格已发生变更,则不支持分析实例变更前的备份文件。

  • 离线全量Key分析功能只支持分析Redis数据结构和以下Tair自研数据结构:TairString、TairHash、TairGIS、TairBloom、TairDoc、TairCpc、TairZset,若存在其他Tair自研数据结构会导致分析任务失败。

操作步骤

  1. 访问Redis实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏,单击CloudDBA > 离线全量Key分析

    离线全量Key分析页签默认展示最近一天缓存分析结果列表,您可以根据需求选择其他时间段。

  3. 离线全量Key分析页签,单击页面右侧的立即分析

  4. 在弹出的对话框中,设置分析的节点与方式。

    设置分析节点和方式

    参数

    说明

    选择分析节点

    选择需要执行缓存分析的节点ID。

    说明

    您可以选择分析整个实例,也可以只选中某个节点进行分析。

    分析方式

    您可以按照界面提示,选择不同的备份文件。

    • 使用上一个备份文件:分析当前最新的备份文件。

    • 选择历史备份文件:允许选择并分析任意历史备份文件。

    • 新建备份, 并使用最新的备份进行分析:立即新建一次备份,待备份完成后对其进行分析,该方式可分析实例当前的状态。

    说明

    在分析已存在的备份文件时,请确认备份文件的时间点,是否符合预期。

    分隔符

    根据需要,输入用于识别Key前缀的分隔符。当分隔符为默认的:;,_-+@=|#时,不需要输入。

  5. 单击确定

    系统执行分析并展示分析状态,您可以单击刷新以更新分析状态。

  6. 找到已完成的分析任务,单击其操作列的详情展示详细的分析结果。

    • 基本信息:展示实例基本属性和缓存分析方法等信息。基本信息

    • 相关节点:展示实例内各节点的内存情况和Key统计信息。结果1

      说明

      当实例为集群或读写分离架构,且选择的分析节点为整个实例时,详情页才会展示相关节点信息并提供节点选择的功能。

    • 详情:展示实例或节点的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接口

说明

CreateCacheAnalysisJob

创建缓存分析任务。

DescribeCacheAnalysisJob

查询缓存分析任务详情。

DescribeCacheAnalysisJobs

查询缓存分析任务列表。