CloudDBA的時延洞察功能可以對雲原生記憶體資料庫Tair資料庫所有命令以及自訂特殊事件進行時延統計,並給出精確到微秒層級的延遲時間。您可以通過該功能排查Tair資料庫的故障和效能降低的原因。
功能簡介
原生Redis在2.8.13版引入時延監控(Latency Monitoring)特性,基於事件機制協助您發現和排查可能的時延問題。該功能僅支援擷取最近160秒的資料,且只存取每秒內時延最高的事件。
時延洞察是雲原生記憶體資料庫Tair提供的升級版時延統計功能,支援記錄多達27個事件及所有命令的執行耗時,並支援儲存最近3天內所有的時延統計資料。時延洞察具有如下特點:
持久化:支援資料持久化,時延毛刺可追溯。
高精度:支援全量事件微秒層級監控資訊。
高效能:非同步實現,對效能幾乎無影響。
即時性:支援即時資料查詢和彙總操作。
多維度:提供全面的時延資訊,可支援從事件、時間、時延三個維度對執行個體進行分析。
前提條件
執行個體為記憶體型,小版本為1.6.9及以上。若需統計Tair module命令,請升級小版本至1.7.28及以上。升級方法請參見升級小版本。
費用
此功能不收費。
操作步驟
訪問Tair執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在左側導覽列,單擊 。
在時延洞察頁,選定待查看的時間段(預設為最近5分鐘),單擊查看。
對於叢集和讀寫分離架構的執行個體,支援分別查看資料節點和代理節點的統計資訊。
說明僅支援查詢最近3天內的歷史資料,且開始時間和結束時間的間隔不超過1小時。
單擊事件名稱或列表中的統計數字,查看事件對應指標隨時間的變化趨勢。
在趨勢圖中,您也可以選擇對應的指標,查看其隨時間的變化趨勢。
說明僅會記錄與展示耗時超過閾值的命令或事件。若您在使用該功能的過程中遇到執行個體時延問題,您可參考常見Latency(時延)事件的處理建議文檔處理時延問題。
指標
說明
事件
事件名稱,包含ExpireCycle、EventLoop、Ping、Scan、Commands、Info等事件,更多資訊請參見常見特殊事件附錄。
總數
事件的數量。
時延avg(us)
事件的平均延遲時間,單位 :微秒(us)。
時延max(us)
事件的最大延遲時間,單位:微秒(us)。
<1ms彙總
延遲時間小於1ms事件的彙總統計數量,單擊查看<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。
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 |