功能簡介
Redis在2.8.13版引入時延監控(Latency Monitoring)特性,基於事件機制協助您發現和排查可能的時延問題。該功能僅支援擷取最近160秒的資料,且只存取每秒內時延最高的事件。
時延洞察是ApsaraDB for Redis提供的升級版時延統計功能,支援記錄多達27個事件及所有Redis命令的執行耗時,並支援儲存最近3天內所有的時延統計資料。時延洞察具有如下特點:
前提條件
ApsaraDB for Redis執行個體為如下版本,升級方法請參見升級小版本與代理版本。
Tair(企業版)記憶體型,小版本為1.6.9及以上。若需統計Tair module命令,請升級小版本至1.7.28及以上。
Redis社區版5.0,小版本為5.1.4及以上。
Redis社區版6.0,小版本為0.1.15及以上。
Redis社區版7.0,小版本為7.0.0.6及以上。
操作步驟
訪問Redis執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在左側導覽列,單擊。
在時延洞察頁,選定待查看的時間段(預設為最近5分鐘),單擊查看。
對於叢集和讀寫分離架構的執行個體,支援分別查看資料節點和代理節點的統計資訊。
說明
僅支援查詢最近3天內的歷史資料,且開始時間和結束時間的間隔不超過1小時。
單擊事件名稱或列表中的統計數字,查看事件對應指標隨時間的變化趨勢。
在趨勢圖中,您也可以選擇對應的指標,查看其隨時間的變化趨勢。

指標 | 說明 |
事件 | 事件名稱,包含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清單
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 |