時(shí)延洞察
在排查云數(shù)據(jù)庫(kù) Tair(兼容 Redis)數(shù)據(jù)庫(kù)實(shí)例的故障和性能降低的原因時(shí),您可以通過時(shí)延洞察功能,對(duì)數(shù)據(jù)庫(kù)所有命令以及自定義特殊事件進(jìn)行時(shí)延統(tǒng)計(jì),得到精確到微秒級(jí)別的延遲時(shí)間,從事件、時(shí)間、時(shí)延三個(gè)維度對(duì)實(shí)例進(jìn)行分析,快速定位和修復(fù)故障。
前提條件
云數(shù)據(jù)庫(kù) Tair(兼容 Redis)實(shí)例為如下版本,升級(jí)方法請(qǐng)參見升級(jí)小版本與代理版本。
Tair(企業(yè)版)內(nèi)存型,小版本為1.6.9及以上。若需統(tǒng)計(jì)Tair module命令,請(qǐng)升級(jí)小版本至1.7.28及以上。
Redis開源版5.0,小版本為5.1.4及以上。
Redis開源版6.0,小版本為0.1.15及以上。
Redis開源版7.0,小版本為7.0.0.6及以上。
功能簡(jiǎn)介
原生Redis在2.8.13版引入延遲監(jiān)控(Latency Monitoring)特性,基于事件機(jī)制幫助您發(fā)現(xiàn)和排查可能的時(shí)延問題。該功能僅支持獲取最近160秒的數(shù)據(jù),且只存取每秒內(nèi)時(shí)延最高的事件。
時(shí)延洞察是云數(shù)據(jù)庫(kù) Tair(兼容 Redis)提供的升級(jí)版時(shí)延統(tǒng)計(jì)功能,支持記錄多達(dá)27個(gè)事件及所有Redis命令的執(zhí)行耗時(shí),并支持保存最近3天內(nèi)所有的時(shí)延統(tǒng)計(jì)數(shù)據(jù)。時(shí)延洞察具有如下特點(diǎn):
持久化:支持?jǐn)?shù)據(jù)持久化,時(shí)延毛刺可追溯。
高精度:支持全量事件微秒級(jí)別監(jiān)控信息。
高性能:異步實(shí)現(xiàn),對(duì)性能幾乎無(wú)影響。
實(shí)時(shí)性:支持實(shí)時(shí)數(shù)據(jù)查詢和聚合操作。
多維度:提供全面的時(shí)延信息,可支持從事件、時(shí)間、時(shí)延三個(gè)維度對(duì)實(shí)例進(jìn)行分析。
費(fèi)用
此功能不收費(fèi)。
操作步驟
登錄DAS控制臺(tái)。
在左側(cè)導(dǎo)航欄中,單擊實(shí)例監(jiān)控。
找到目標(biāo)實(shí)例,單擊實(shí)例ID,進(jìn)入目標(biāo)實(shí)例詳情頁(yè)。
在左側(cè)導(dǎo)航欄,單擊請(qǐng)求分析 > 時(shí)延洞察。
在時(shí)延洞察頁(yè),查看對(duì)應(yīng)節(jié)點(diǎn)選定時(shí)間段內(nèi)的統(tǒng)計(jì)信息。
對(duì)于集群和讀寫分離架構(gòu)的實(shí)例,支持分別查看數(shù)據(jù)節(jié)點(diǎn)和代理節(jié)點(diǎn)的統(tǒng)計(jì)信息。
說明僅支持查詢3天內(nèi)的歷史數(shù)據(jù),且開始時(shí)間和結(jié)束時(shí)間的間隔不超過1小時(shí)。
單擊列表中的統(tǒng)計(jì)數(shù)字,查看事件對(duì)應(yīng)指標(biāo)隨時(shí)間的變化趨勢(shì)。在趨勢(shì)圖中,您也可以選擇對(duì)應(yīng)的指標(biāo),查看其隨時(shí)間的變化趨勢(shì)。
說明僅會(huì)記錄與展示耗時(shí)超過閾值的命令或事件。若您在使用該功能的過程中遇到實(shí)例時(shí)延問題,您可參考常見Latency(時(shí)延)事件的處理建議文檔處理時(shí)延問題。
指標(biāo)
說明
事件
事件名稱。
總數(shù)
事件的數(shù)量。
時(shí)延avg(us)
事件的平均時(shí)延,單位 :us。
時(shí)延max(us)
事件的最大時(shí)延,單位: us。
<1ms聚合
時(shí)延小于1ms事件的聚合統(tǒng)計(jì)數(shù)量,單擊查看<1us、<2us、<4us、<8us、<16us、<32us、<64us、<128us、<256us、<512us和<1ms等不同時(shí)間范圍的統(tǒng)計(jì)數(shù)據(jù)。
說明不同時(shí)間范圍的統(tǒng)計(jì)規(guī)則:例如,<1us,統(tǒng)計(jì)時(shí)延在0~1us之間的事件數(shù)量;<2us,統(tǒng)計(jì)時(shí)延在1us~2us之間的事件數(shù)量。
<2ms
<4ms
...
>33s
對(duì)應(yīng)時(shí)延范圍內(nèi)的事件數(shù)量。
說明不同時(shí)間范圍的統(tǒng)計(jì)規(guī)則:例如,<2ms,統(tǒng)計(jì)時(shí)延在1ms~2ms之間的事件數(shù)量;>33s,統(tǒng)計(jì)時(shí)延大于33s的事件數(shù)量。
常見特殊事件附錄
類別 | 名稱 | 閾值 | 說明 |
內(nèi)存驅(qū)逐相關(guān) | EvictionDel | 30ms | 在逐出周期中刪除Key的耗時(shí)。 |
EvictionLazyFree | 30ms | 在逐出周期中,等待后臺(tái)線程釋放內(nèi)存的耗時(shí)。 | |
EvictionCycle | 30ms | 一次逐出周期的耗時(shí),包含逐出數(shù)據(jù)的選擇、刪除操作,及后臺(tái)線程等待的時(shí)間。 | |
內(nèi)存碎片整理 | ActiveDefragCycle | 100ms | 內(nèi)存碎片整理過程的耗時(shí)。 |
Rehash | Rehash | 100ms | 發(fā)生Rehash過程的耗時(shí)。 |
數(shù)據(jù)結(jié)構(gòu)升級(jí) | ZipListConvertHash | 30ms | Hash編碼類型轉(zhuǎn)換耗時(shí)(Ziplist轉(zhuǎn)換為Dict)。 |
IntsetConvertSet | 30ms | Set編碼類型轉(zhuǎn)換耗時(shí)(Intset轉(zhuǎn)換為Set)。 | |
ZipListConvertZset | 30ms | Zset編碼類型轉(zhuǎn)換耗時(shí)(Ziplist轉(zhuǎn)換為Skiplist)。 | |
AOF相關(guān) | AofWriteAlone | 30ms | 一次正常寫入AOF文件的耗時(shí)。 |
AofWrite | 30ms | 寫入AOF(AppendOnly File)的耗時(shí)。每次成功寫入AOF文件后,會(huì)記錄AofWrite事件以及AofWriteAlone、AofWriteActiveChild、AofWritePendingFsync三者中的一種事件。 | |
AofFstat | 30ms | Fstat的耗時(shí)。 | |
AofRename | 30ms | Rename的耗時(shí)統(tǒng)計(jì)。 | |
AofReWriteDiffWrite | 30ms | 子進(jìn)程重寫完AOF后,主進(jìn)程把buffer中的增量AOF寫入的耗時(shí)。 | |
AofWriteActiveChild | 30ms | 寫入AOF文件的耗時(shí),寫入過程中存在其他子進(jìn)程也在向磁盤寫數(shù)據(jù)等情況。 | |
AofWritePendingFsync | 30ms | 寫入AOF文件的耗時(shí),寫入過程中存在后臺(tái)進(jìn)程正在執(zhí)行fsync。 | |
RDB相關(guān) | RdbUnlinkTempFile | 50ms | bgsave子進(jìn)程中斷后刪除臨時(shí)RDB文件的耗時(shí)。 |
其他 | Commands | 30ms | 常規(guī)命令(未被標(biāo)為fast)的耗時(shí)。 |
FastCommand | 30ms | 被標(biāo)為fast的命令(命令的時(shí)間復(fù)雜度為O(1)和O(log N))的耗時(shí)。標(biāo)為fast的命令具體請(qǐng)參見FastCommand清單。 | |
EventLoop | 50ms | Main Loop一次的耗時(shí)。 | |
Fork | 100ms | 調(diào)用Fork操作的耗時(shí)。 | |
Transaction | 50ms | 實(shí)際事務(wù)執(zhí)行的耗時(shí)。 | |
PipeLine | 50ms | 多線程Pipeline耗時(shí)。 | |
ExpireCycle | 30ms | 一次清理過期Key周期的耗時(shí)。 | |
ExpireDel | 30ms | 在清理過期Key周期中,刪除Key的耗時(shí)。 | |
SlotRdbsUnlinkTempFile | 30ms | Slot bgsave子進(jìn)程中斷后刪除臨時(shí)RDB文件的耗時(shí)。 | |
LoadSlotRdb | 100ms | Slot載入至(load)RDB的耗時(shí)。 | |
SlotreplTargetcron | 50ms | Slot子進(jìn)程載入至(load)RDB到一個(gè)臨時(shí)的數(shù)據(jù)庫(kù)(DB)后,再將其移動(dòng)至目標(biāo)數(shù)據(jù)庫(kù)(DB)的耗時(shí)。 |
FastCommand清單
清單中列舉了常用的命令,更多命令請(qǐng)?jiān)?a id="xref-fu7-cry-jbq" class="" target="_blank">Commands | Redis官網(wǎng)中查看。ACL類中帶有@fast標(biāo)記的命令均屬于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 |