所有指標(biāo)中最重要的當(dāng)然是檢查redis是否還活著,可以通過命令PING的響應(yīng)是否是PONG來判斷。
連接的客戶端數(shù)量,可通過命令src/redis-cli info Clients | grep connected_clients得到,這個(gè)值跟使用redis的服務(wù)的連接池配置關(guān)系比較大,所以在監(jiān)控這個(gè)字段的值時(shí)需要注意。另外這個(gè)值也不能太大,建議不要超過5000,如果太大可能是redis處理太慢,那么需要排除問題找出原因。 另外還有一個(gè)拒絕連接數(shù)(rejected_connections)也需要關(guān)注,這個(gè)值理想狀態(tài)是0。如果大于0,說明創(chuàng)建的連接數(shù)超過了maxclients,需要排查原因。是redis連接池配置不合理還是連接這個(gè)redis實(shí)例的服務(wù)過多等。
blocked_clients,一般是執(zhí)行了list數(shù)據(jù)類型的BLPOP或者BRPOP命令引起的,可通過命令src/redis-cli info Clients | grep blocked_clients得到,很明顯,這個(gè)值最好應(yīng)該為0。
監(jiān)控redis使用內(nèi)存的峰值,我們都知道Redis可以通過命令
mem_fragmentation_ratio=used_memory_rss/used_memory,這也是一個(gè)非常需要關(guān)心的指標(biāo)。如果是redis4.0之前的版本,這個(gè)問題除了重啟也沒什么很好的優(yōu)化辦法。而redis4.0有一個(gè)主要特性就是優(yōu)化內(nèi)存碎片率問題(Memory de-fragmentation)。在redis.conf配置文件中有介紹即ACTIVE DEFRAGMENTATION:碎片整理允許Redis壓縮內(nèi)存空間,從而回收內(nèi)存。這個(gè)特性默認(rèn)是關(guān)閉的,可以通過命令
另外需要注意的是,當(dāng)內(nèi)存使用量(used_memory)很小的時(shí)候,這個(gè)值參考價(jià)值不大。所以,建議used_memory至少1G以上才考慮對(duì)內(nèi)存碎片率進(jìn)行監(jiān)控。
keyspace_misses/keyspace_hits這兩個(gè)指標(biāo)用來統(tǒng)計(jì)緩存的命令率,keyspace_misses指未命中次數(shù),keyspace_hits表示命中次數(shù)。keyspace_hits/(keyspace_hits+keyspace_misses)就是緩存命中率。視情況而定,建議0.9以上,即緩存命中率要超過90%。如果緩存命中率過低,那么要排查對(duì)緩存的用法是否有問題!
instantaneous_ops_per_sec這個(gè)指標(biāo)表示緩存的OPS,如果業(yè)務(wù)比較平穩(wěn),那么這個(gè)值也不會(huì)波動(dòng)很大,不過國(guó)內(nèi)的業(yè)務(wù)比較特性,如果不是全球化的產(chǎn)品,夜間是基本上沒有什么訪問量的,所以這個(gè)字段的監(jiān)控要結(jié)合自己的具體業(yè)務(wù),不同時(shí)間段波動(dòng)范圍可能有所不同。
rdb_last_bgsave_status/aof_last_bgrewrite_status,即最近一次或者說最后一次RDB/AOF持久化是否有問題,這兩個(gè)值都應(yīng)該是'ok'。 另外,由于redis持久化時(shí)會(huì)fork子進(jìn)程,且fork是一個(gè)完全阻塞的過程,所以可以監(jiān)控fork耗時(shí)即latest_fork_usec,單位是微妙,如果這個(gè)值比較大會(huì)影響業(yè)務(wù),甚至出現(xiàn)timeout。
如果把Redis當(dāng)緩存使用,那么建議所有的key都設(shè)置了expire屬性,通過命令src/redis-cli info Keyspace得到每個(gè)db中key的數(shù)量和設(shè)置了expire屬性的key的屬性,且expires需要等于keys: # Keyspace
通過命令 |
|
|