全部產品
Search
文件中心

Database Autonomy Service:時延洞察

更新時間:Jul 27, 2024

在排查Redis資料庫執行個體的故障和效能降低的原因時,您可以通過時延洞察功能,對資料庫所有命令以及自訂特殊事件進行時延統計,得到精確到微秒層級的延遲時間,從事件、時間、時延三個維度對執行個體進行分析,快速定位和修複故障。

前提條件

Redis執行個體為如下版本,升級方法請參見升級小版本與代理版本

  • Tair(Redis企業版)記憶體型,小版本為1.6.9及以上。若需統計Tair module命令,請升級小版本至1.7.28及以上。

  • 社區版5.0,小版本為5.1.4及以上。

  • 社區版6.0,小版本為0.1.15及以上。

  • 社區版7.0,小版本為7.0.0.6及以上。

功能簡介

原生Redis在2.8.13版引入延遲監控(Latency Monitoring)特性,基於事件機制協助您發現和排查可能的時延問題。該功能僅支援擷取最近160秒的資料,且只存取每秒內時延最高的事件。

時延洞察是KVStore for Redis提供的升級版時延統計功能,支援記錄多達27個事件及所有Redis命令的執行耗時,並支援儲存最近3天內所有的時延統計資料。時延洞察具有如下特點:

  • 持久化:支援資料持久化,時延毛刺可追溯。

  • 高精度:支援全量事件微秒層級監控資訊。

  • 高效能:非同步實現,對效能幾乎無影響。

  • 即時性:支援即時資料查詢和彙總操作。

  • 多維度:提供全面的時延資訊,可支援從事件、時間、時延三個維度對執行個體進行分析。

費用

此功能不收費。

操作步驟

  1. 登入DAS控制台

  2. 在左側導覽列中,單擊執行個體監控

  3. 找到目標執行個體,單擊執行個體ID,進入目標執行個體詳情頁。

  4. 在左側導覽列,單擊請求分析 > 時延洞察

  5. 時延洞察頁,查看對應節點選定時間段內的統計資訊。

    對於叢集和讀寫分離架構的執行個體,支援分別查看數據節點代理節點的統計資訊。

    說明

    僅支援查詢3天內的歷史資料,且開始時間和結束時間的間隔不超過1小時。

    單擊列表中的統計數字,查看事件對應指標隨時間的變化趨勢。在趨勢圖中,您也可以選擇對應的指標,查看其隨時間的變化趨勢。

    說明

    僅會記錄與展示耗時超過閾值的命令或事件。若您在使用該功能的過程中遇到執行個體時延問題,您可參考常見Latency(時延)事件的處理建議文檔處理時延問題。

    pqus

    指標

    說明

    事件

    事件名稱。

    總數

    事件的數量。

    時延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

在逐出周期中刪除Key的耗時。

EvictionLazyFree

30ms

在逐出周期中,等待後台線程釋放記憶體的耗時。

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(AppendOnly File)的耗時。每次成功寫入AOF檔案後,會記錄AofWrite事件以及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

常規命令(未被標為fast)的耗時。

FastCommand

30ms

被標為fast的命令(命令的時間複雜度為O(1)和O(log N))的耗時。標為fast的命令具體請參見FastCommand清單

EventLoop

50ms

Main Loop一次的耗時。

Fork

100ms

調用Fork操作的耗時。

Transaction

50ms

實際事務執行的耗時。

PipeLine

50ms

多線程Pipeline耗時。

ExpireCycle

30ms

一次清理到期Key周期的耗時。

ExpireDel

30ms

在清理到期Key周期中,刪除Key的耗時。

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