CloudDBA的时延洞察功能可以对Redis数据库所有命令以及自定义特殊事件进行时延统计,并给出精确到微秒级别的延迟时间。您可以通过该功能排查Redis数据库的故障和性能降低的原因。

功能简介

原生Redis在2.8.13版引入时延监控(Latency Monitoring)特性,基于事件机制帮助您发现和排查可能的时延问题。该功能仅支持获取最近160秒的数据,且只存取每秒内时延最高的事件。

时延洞察是云数据库Redis提供的升级版时延统计功能,支持记录多达27个事件及所有Redis命令的执行耗时,并支持保存最近3天内所有的时延统计数据。时延洞察具有如下特点:
  • 持久化:支持数据持久化,时延毛刺可追溯。
  • 高精度:支持全量事件微秒级别监控信息。
  • 高性能:异步实现,对性能几乎无影响。
  • 实时性:支持实时数据查询和聚合操作。
  • 多维度:提供全面的时延信息,可支持从事件、时间、时延三个维度对实例进行分析。

前提条件

Redis实例为如下版本,升级方法请参见升级小版本
  • 本地盘企业版内存型,小版本为1.6.9及以上。若需统计Tair module命令,请升级小版本至1.7.28及以上。
  • 社区版5.0,小版本为5.1.4及以上。
  • 社区版6.0,小版本为0.1.15及以上。

操作步骤

  1. 访问Redis实例列表,在上方选择地域,然后单击目标实例ID。
  2. 在左侧导航栏,单击CloudDBA > 时延洞察
  3. 时延洞察页,选定待查看的时间段(默认为最近5分钟),单击查看
    说明 仅支持查询最近3天内的历史数据,且开始时间和结束时间的间隔不超过1小时。
  4. 单击事件名称或列表中的统计数字,查看事件对应指标随时间的变化趋势。
    在趋势图中,您也可以选择对应的指标,查看其随时间的变化趋势。
    说明 仅会记录与展示耗时超过阈值的命令或事件。若您在使用该功能的过程中遇到实例时延问题,您可参考常见Latency(时延)事件的处理建议文档处理时延问题。
    pqus
    指标 说明
    事件 事件名称,包含ExpireCycle、EventLoop、Ping、Scan、Commands、Info等事件,更多信息请参见常见特殊事件附录
    总数 事件的数量。
    时延avg(us) 事件的平均延迟时间,单位 :微秒(us)。
    时延max(us) 事件的最大延迟时间,单位:微秒(us)。
    <1ms聚合 延迟时间小于1ms事件的聚合统计数量,单击zhankai查看<1us、<2us、<4us、<8us、<16us、<32us、<64us、<128us、<256us、<512us和<1ms等不同时间范围的统计数据。
    说明 不同时间范围的统计规则:例如,<1us,统计延迟时间在0~1us之间的事件数量;<2us,统计延迟时间在1us~2us之间的事件数量。

    <2ms

    <4ms

    ...

    >33s

    延迟时间对应此范围内的事件数量。
    说明 不同时间范围的统计规则:例如,<2ms,统计延迟时间在1ms~2ms之间的事件数量;>33s,统计延迟时间大于33s的事件数量。

常见特殊事件附录

类别 名称 阈值 说明
内存驱逐相关 EvictionDel 30ms 逐出键的耗时。
EvictionLazyFree 30ms 逐出过程中Lazyfree的耗时。
EvictionCycle 30ms 执行一次逐出的耗时。
内存碎片整理 ActiveDefragCycle 100ms 内存碎片整理过程的耗时。
Rehash Rehash 100ms 发生Rehash过程的耗时。
数据结构升级 ZipListConvertHash 30ms Hash编码类型转换耗时(Ziplist转换为Dict)。
IntsetConvertSet 30ms Set编码类型转换耗时(Intset转换为Set)。
ZipListConvertZset 30ms Zset编码类型转换耗时(Ziplist转换为Skiplist)。
AOF相关 AofWriteAlone 30ms AOF 写入的过程中正常运行的耗时。
AofWrite 30ms 每次AOF写入成功时的耗时,为AofWriteAlone、AofWriteActiveChild、AofWritePendingFsync的三者之一。
AofFstat 30ms Fstat的耗时。
AofRename 30ms Rename的耗时统计。
AofReWriteDiffWrite 30ms 子进程重写完AOF后,主进程把buffer中的增量AOF写入的耗时。
AofWriteActiveChild 30ms AOF写入的过程中存在其他子进程时的耗时。
AofWritePendingFsync 30ms AOF写入的过程中存在Fsync任务时的耗时。
RDB相关 RdbUnlinkTempFile 50ms bgsave子进程中断后删除临时RDB文件的耗时。
其他 Commands 30ms 在Redis命令表中未被标为fast的命令消耗的时间。
FastCommand 30ms 在Redis命令表中被标为fast的命令消耗的时间,标为fast的命令具体请参见FastCommand清单
EventLoop 50ms Main Loop一次的耗时。
Fork 100ms Fork执行后在父进程中记录的耗时。
Transaction 50ms 实际事务执行的耗时。
PipeLine 50ms 多线程Pipeline耗时。
ExpireCycle 30ms 超时键的定期删除耗时。
SlotRdbsUnlinkTempFile 30ms Slot bgsave子进程中断后删除临时RDB文件的耗时。
LoadSlotRdb 100ms Slot载入至(load)RDB的耗时。
SlotreplTargetcron 50ms Slot子进程载入至(load)RDB到一个临时的数据库(DB)后,再将其移动至目标数据库(DB)的耗时。

FastCommand清单

说明 清单中列举了常用的命令,更多命令请在Commands | Redis官网中查看。ACL类中带有@fast标记的命令均属于FastCommand。command
ACCOUNT ADMINAUTH ASKING AUTH
BKLIST BZPOPMAX BZPOPMIN DBSIZE
DECR DECRBY DISCARD ECHO
EXISTS EXPIRE EXPIREAT Get
GETBIT HDEL HEXISTS HGET
HINCRBY HINCRBYFLOAT HKCOUNTER HKSWITCH
HLEN HMGET HMINCRBY HMINCRBYFLOAT
HMSET HSET HSETNX HSTRLEN
INCR INCRBY INCRBYFLOAT LASTSAVE
LLEN LPOP LPUSH LPUSHX
MGET MOVE MULTI PERSIST
PEXPIRE PEXPIREAT PFADD PING
PTTL PUBLISH READONLY READWRITE
RENAMENX RPOP RPUSH RPUSHX
SADD SCARD SELECT SETNX
SISMEMBER SMOVE SPOP SREM
STRLEN SWAPDB TIME TOUCH
TTL TYPE UNLINK UNWATCH
WATCH XACK XADD XCLAIM
XDEL XLEN XSETID XTRIM
ZADD ZCARD ZCOUNT ZINCRBY
ZLEXCOUNT ZPOPMAX ZPOPMIN ZRANK
ZREM ZREVRANK ZSCORE ZSCOREAVG