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

功能简介

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

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

前提条件

实例为内存型,小版本为1.6.9及以上。若需统计Tair module命令,请升级小版本至1.7.28及以上。升级方法请参见升级小版本

操作步骤

  1. 访问Tair实例列表,在上方选择地域,然后单击目标实例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的事件数量。

常见特殊事件附录

类别名称阈值说明
内存驱逐相关EvictionDel30ms在逐出周期中删除Key的耗时。
EvictionLazyFree30ms在逐出周期中,等待后台线程释放内存的耗时。
EvictionCycle30ms一次逐出周期的耗时,包含逐出数据的选择、删除操作,及后台线程等待的时间。
内存碎片整理ActiveDefragCycle100ms内存碎片整理过程的耗时。
RehashRehash100ms发生Rehash过程的耗时。
数据结构升级ZipListConvertHash30msHash编码类型转换耗时(Ziplist转换为Dict)。
IntsetConvertSet30msSet编码类型转换耗时(Intset转换为Set)。
ZipListConvertZset30msZset编码类型转换耗时(Ziplist转换为Skiplist)。
AOF相关AofWriteAlone30ms一次正常写入AOF文件的耗时。
AofWrite30ms写入AOF(AppendOnly File)的耗时。每次成功写入AOF文件后,会记录AofWrite事件以及AofWriteAlone、AofWriteActiveChild、AofWritePendingFsync三者中的一种事件。
AofFstat30msFstat的耗时。
AofRename30msRename的耗时统计。
AofReWriteDiffWrite30ms子进程重写完AOF后,主进程把buffer中的增量AOF写入的耗时。
AofWriteActiveChild30ms写入AOF文件的耗时,写入过程中存在其他子进程也在向磁盘写数据等情况。
AofWritePendingFsync30ms写入AOF文件的耗时,写入过程中存在后台进程正在执行fsync。
RDB相关RdbUnlinkTempFile50msbgsave子进程中断后删除临时RDB文件的耗时。
其他Commands30ms常规命令(未被标为fast)的耗时。
FastCommand30ms被标为fast的命令(命令的时间复杂度为O(1)和O(log N))的耗时。标为fast的命令具体请参见FastCommand清单
EventLoop50msMain Loop一次的耗时。
Fork100ms调用Fork操作的耗时。
Transaction50ms实际事务执行的耗时。
PipeLine50ms多线程Pipeline耗时。
ExpireCycle30ms一次清理过期Key周期的耗时。
ExpireDel30ms在清理过期Key周期中,删除Key的耗时。
SlotRdbsUnlinkTempFile30msSlot bgsave子进程中断后删除临时RDB文件的耗时。
LoadSlotRdb100msSlot载入至(load)RDB的耗时。
SlotreplTargetcron50msSlot子进程载入至(load)RDB到一个临时的数据库(DB)后,再将其移动至目标数据库(DB)的耗时。

FastCommand清单

说明 清单中列举了常用的命令,更多命令请在Commands | Redis官网中查看。ACL类中带有@fast标记的命令均属于FastCommand。command
ACCOUNTADMINAUTHASKINGAUTH
BKLISTBZPOPMAXBZPOPMINDBSIZE
DECRDECRBYDISCARDECHO
EXISTSEXPIREEXPIREATGet
GETBITHDELHEXISTSHGET
HINCRBYHINCRBYFLOATHKCOUNTERHKSWITCH
HLENHMGETHMINCRBYHMINCRBYFLOAT
HMSETHSETHSETNXHSTRLEN
INCRINCRBYINCRBYFLOATLASTSAVE
LLENLPOPLPUSHLPUSHX
MGETMOVEMULTIPERSIST
PEXPIREPEXPIREATPFADDPING
PTTLPUBLISHREADONLYREADWRITE
RENAMENXRPOPRPUSHRPUSHX
SADDSCARDSELECTSETNX
SISMEMBERSMOVESPOPSREM
STRLENSWAPDBTIMETOUCH
TTLTYPEUNLINKUNWATCH
WATCHXACKXADDXCLAIM
XDELXLENXSETIDXTRIM
ZADDZCARDZCOUNTZINCRBY
ZLEXCOUNTZPOPMAXZPOPMINZRANK
ZREMZREVRANKZSCOREZSCOREAVG