1 慢日志:
1.1、通過命令[slowlog get]得到 Redis 執行的 slowlog 集合,理想情況下slowlog 集合應該為空即沒有任何慢日志。
1.2、若發現有慢命令,則應該逐個分析是否正常,是否需要優化。
2 存活情況:是最重要的健康指標,通過命令 PING 的響應是否為 PONG 來判斷。
3 連接數:connected_clients
3.1、連接的客戶端數量,radis-stat 監控工具或命令 [redis-cli info Clients|grep connected_clients] 得到,這個值與使用 Redis 服務的連接池配置關系比較大,這個值如果很大,需要排查問題原因。
3.2、另外還有一個拒絕連接數(rejected_connections)也需要關注,這個值理想狀態是 0 。如果大於 0,說明創建的連接數大於 maxclients,需要排查原因。是 Redis 連接池配合不合理還是連接這個Redis 的服務過多。
4 阻塞客戶端數量: blocked_clients
4.1 blocked_clients 通常是執行了 list 數據類型的 BLPOP 或者 BRPOP 命令引起的,可以通過[redis-cli info Clients|grep blocked_clients]得到,這個值最應該=0。
5 使用內存峰值:
5.1 監控 Redis 內存使用峰值,可以通過命令[config set maxmemory]設置允許使用的最大內存。
5.2 為了防止發生 swap 導致 Redis 性能驟減,甚至由於使用內存超標導致系統kill,建議used_memory_peak(占 用內存的峰值)的值 與maxmemory 的值有個安全區間,例如1G。
5.3 可用radis-stat 查看used_memory 圖像化曲線 找到占用內存的峰值
6 內存碎片率:used_memory_rss/use_memory 這兩個值可用radis-stat監控
6.1 mem_fragmentation_ratio = used_memory_rss/use_memory 當值大於1時,表示分配的內存超過實際使用的內存,數值越大[利用率不高],碎片率越嚴重。當這個值小於1時,表示發生了 swap(Swap分區在系統的物理內存不夠用的時候,把物理內存中的一部分空間釋放出來,以供當前運行的程序使用) ,既可用內存不足。
6.2 Redis4.0 有一個主要的特性就是優化內存碎片率問題(Memory de-fragmentation)。在redis.conf 配置文件中[ACTIVE DEFRAGMENTATION:碎片整理允許 Redis 壓縮內存空間,從而回收內存。此特性默認是關閉的,可以通過命令CONFIG SET activedefrag yes 熱啟動這個特性]。
6.3 當內存使用量(use_memory)很小的時候,這個值參考價值不大。所以建議 used_memory 至少 1G 以上才考慮對內存碎片率進行監控。
7 緩存命中率:keyspace_misses+keyspace_hits 這兩個值可用radis-stat監控
7.1 keyspace_misses/keyspace_hits 這兩個指標用來統計緩存的命中率,keyspace_misses值未命中次數,keyspace_hits 表示命令次數。keyspace_hits/(keyspace_misses+keyspace_hits) 就是緩存命中率。
7.2 如果緩存命中率過低,那么要排查對緩存的用法是否有問題。
8 OPS:instantaneous_pos_per_sec 表示緩存的OPS(operation per second 每秒操作次數)
9 持久化:
9.1 rdb_last_bgsave_status/aof_last_bgrewrite_status,即最近一次或者最后一次 RDB/AOF 持久化是否有問題,這兩個值都應該時 “OK”。②、由於 Redis 持久化時會 fork 子進程,且 fork 是一個完全阻塞的過程,所以可以監控 fork 耗時即:latest_fork_usec,單位是微妙,如果這個值比較大會影響業務,甚至出現 timeout 。
9.2 失效KEY:如果把 Redis 當緩存使用,那么建議所有的 key 都設置 expire 屬性,通過命令 redis-cli info Keyspace 得到每個 db 中 key 的數量和設置了 expire屬性的 key 的屬性,且 expires(表示設置了超時時間的key個數) 需要 等於 keys。
