1. 程式人生 > 實用技巧 >Redis 監控命令(info字典表)

Redis 監控命令(info字典表)

目錄

一、Server 伺服器資訊

二、clients 已連線客戶端資訊

三、stats 一般統計資訊

四、cput 計算量統計資訊

五、commandstats 命令統計資訊

六、cluster 叢集資訊

七、keyspace 資料庫相關的統計資訊

八、replication 主從複製資訊,slave上顯示的資訊

九、persistence RDB 和 AOF 相關持久化資訊

十、memory 記憶體資訊

十一、Redis 效能檢視與監控常用工具

info <section> :以一種易於解釋(parse)且易於閱讀的格式,返回關於 Redis 伺服器的各種資訊和統計數值。通過給定可選的引數 section,可以讓命令只返回某一部分的資訊。section:server、clients、memory、persistence、stats、replication、cpu、commandstats、cluster、keyspace、all、default。時間複雜度:O(1)

舉個栗子:連線的客戶端數量:redis-cli info clients|grep connected_clients 後面只列舉引數資訊。

一、Server 伺服器資訊
server 部分記錄了 Redis 伺服器的資訊,它包含以下域:
  ●  redis_version:Redis 伺服器版本
  ●  redis_git_sha1:Git SHA1
  ●  redis_git_dirty:Git dirty flag
  ●  os:Redis 伺服器的宿主作業系統
  ●  arch_bits:架構(32 或 64 位)
  ●  multiplexing_api:Redis 所使用的事件處理機制
  ●  gcc_version:編譯 Redis 時所使用的 GCC 版本
  ●  process_id:伺服器程序的 PID
  ●  run_id:Redis 伺服器的隨機識別符號(用於 Sentinel 和叢集)
  ●  tcp_port:TCP/IP 監聽埠
  ●  uptime_in_seconds:自 Redis 伺服器啟動以來,經過的秒數
  ●  uptime_in_days:自 Redis 伺服器啟動以來,經過的天數
  ●  lru_clock:以分鐘為單位進行自增的時鐘,用於 LRU 管理

二、clients 已連線客戶端資訊
clients 部分記錄了已連線客戶端資訊,它包含以下域:
【1】connected_clients:已連線客戶端的數量(不包括通過從屬伺服器連線的客戶端)
【2】client_longest_output_list:當前連線的客戶端當中,最長的輸出列表
【3】client_longest_input_buf : 當前連線的客戶端當中,最大輸入快取
【4】blocked_clients:正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客戶端的數量

三、stats 一般統計資訊
部分記錄了一般統計資訊,它包含以下域:
  ●  total_connections_received:伺服器已經接受的連線請求數量
  ●  total_commands_processed:伺服器已經執行的命令數量
  ●  instantaneous_ops_per_sec:伺服器每秒中執行的命令數量
  ●  rejected_connections:因為最大客戶端數量限制而被拒絕的連線請求數量
  ●  expired_keys:因為過期而被自動刪除的資料庫鍵數量
  ●  evicted_keys:因為最大記憶體容量限制而被驅逐(evict)的鍵數量
  ●  keyspace_hits:查詢資料庫鍵成功的次數
  ●  keyspace_misses:查詢資料庫鍵失敗的次數
  ●  pubsub_channels:目前被訂閱的頻道數量
  ●  pubsub_patterns:目前被訂閱的模式數量
  ●  latest_fork_usec:最近一次 fork()操作耗費的時間(毫秒)

四、cput 計算量統計資訊
cpu 部分記錄了 CPU 的計算量統計資訊,它包含以下域:
【1】used_cpu_sys:Redis 伺服器耗費的系統CPU(0.03)
【2】used_cpu_user:Redis 伺服器耗費的使用者CPU(0.01)
【3】used_cpu_sys_children:Redis後臺程序耗費的系統CPU(0.00)
【4】used_cpu_user_children:Redis後臺程序耗費的使用者CPU(0.00)

五、commandstats 命令統計資訊
 commandstats 部分記錄了各種不同型別的命令的執行統計資訊,比如命令執行的次數、命令耗費的 CPU 時間、執行每個命令耗費的平均 CPU 時間等等,對於每種型別的命令,這個部分都會新增一行一下格式的資訊:

cmdstat_get:calls=1664657469,usec=8266063320,usec_per_call=4.97 #get表示命令,call表示命令執行次數,usec總共消耗的CPU時長(單位微秒),平均每次消耗的CPU時長(單位微秒)。

六、cluster 叢集資訊
部分記錄了和叢集有關的資訊,它包含以下域:cluster_enabled:一個標誌值,記錄叢集功能是否已經開啟。

七、keyspace 資料庫相關的統計資訊
keyspace 部分記錄了資料庫相關的統計資訊,比如資料庫的鍵數量、資料庫已經被刪除的過期鍵數量等,對於每個資料庫,這個部分都會新增一行以下格式資訊:

db0:keys=2,expires=0,avg_ttl=0 0號資料庫有2個鍵、已經被刪除的過期鍵數量為0、以及帶有生存期的 key的數量。

八、replication 主從複製資訊,slave上顯示的資訊
【1】role:例項的角色,是master or slave。如果當前伺服器沒有在複製任何其他伺服器,那麼這個域的值就是 master;否則的話,這個域的值就是 salve。注意,再建立複製連的時候,一個伺服器也可能是另一個伺服器的主伺服器。
【2】如果當前伺服器是一個從伺服器的話,那麼這個部分還會加上以下域:
  ●  master_host:此節點對應的 master的ip;
  ●  master_port:此節點對應的 master的port;
  ●  master_link_status:複製連線當前的狀態,up 表示連線正常,down 表示連線斷開。
  ●  master_last_io_seconds_ago:主庫多少秒未傳送資料到從庫
  ●  master_sync_in_progress:從伺服器是否在與主伺服器進行同步
【3】如果同步操作正在進行,那麼這個部分還會加上以下域:
  ●  master_sync_left_bytes:距離同步完成還缺少多少位元組資料;
  ●  master_sync_last_io_seconds_ago:距離最近一次因為 SYNC 操作而進行 I/O 已經過去了多少秒;
【4】如果主從伺服器之間的連線處於斷線狀態,那麼這個部分還會加上以下域:
  ●  master_link_down_since_seconds:主從伺服器連線斷開了多少秒;
【5】以下是一些總會出現的域:
  ●  slave_repl_offset:slave 複製偏移量;
  ●  slave_priority:slave優先順序;
  ●  slave_read_only:從庫是否設定只讀;
  ●  connected_slaves:連線的 slave例項個數;
  ●  master_repl_offset:0;
  ●  repl_backlog_active:0 #複製積壓緩衝區是否開啟;
  ●  repl_backlog_size:複製積壓緩衝大小;
  ●  repl_backlog_first_byte_offset:複製緩衝區裡偏移量的大小;
  ●  repl_backlog_histlen:此值等於 master_repl_offset - repl_backlog_first_byte_offset,該值不會超過repl_backlog_size的大小;

九、persistence RDB 和 AOF 相關持久化資訊
persistence 記錄了 RDB 和 AOF 相關持久化資訊,它包含以下域:
【1】loading:一個標誌值,記錄了伺服器是否正在載入持久化檔案;
【2】rdb_changes_since_last_save:距離最後一次成功建立持久化檔案之後,改變了多少個鍵值;
【3】rdb_bgsave_in_progress:一個標誌值,記錄伺服器是否正在建立 RDB檔案;
【4】rdb_last_save_time:最近一次成功建立 RDB檔案的UNIX時間;
【5】rdb_last_bgsave_status:ok 一個標誌值,記錄了最後一次建立 RDB檔案的結果是成功還是失敗;
【6】rdb_last_bgsave_time_sec:-1 記錄最後一次建立RDB檔案耗費的秒數;
【7】rdb_current_bgsave_time_sec:-1 如果伺服器正在建立RDB檔案,那麼這個值記錄的就是當前的建立 RDB操作已經耗費了多長時間(單位為秒);
【8】aof_enabled:0 一個標誌值,記錄了AOF是否處於開啟狀態;
【9】aof_rewrite_in_progress:0 一個標誌值,記錄了伺服器是否正在建立 AOF檔案;
【10】aof_rewrite_scheduled:0 一個標誌值,記錄了 RDB檔案建立完之後,是否需要執行預約的AOF重寫操作;
【11】aof_last_rewrite_time_sec:-1 記錄了最後一次 AOF重寫操作的耗時;
【12】aof_current_rewrite_time_sec:-1 如果伺服器正在進行 AOF重寫操作,那麼這個值記錄的就是當前重寫操作已經耗費的時間(單位是秒);
【13】aof_last_bgrewrite_status:ok 一個標誌值,記錄了最後一次重寫 AOF檔案的結果是成功還是失敗;

十、memory 記憶體資訊
memory 部分記錄了伺服器的記憶體資訊,它包含以下域:
  ●  used_memory:由 Redis 分配器分配的記憶體總量,以位元組(byte)為單位;
  ●  used_memory_human:以人類可讀的格式返回 Redis 分配的記憶體總量;
  ●  used_memory_rss:從作業系統的角度,返回 Redis 已分配的記憶體總量(俗稱常駐集大小)。這個值和 top 、 ps 等命令的輸出一致;
  ●  used_memory_peak:Redis 的記憶體消耗峰值(以位元組為單位);
  ●  used_memory_peak_human:以人類可讀的格式返回 Redis 的記憶體消耗峰值;
  ●  used_memory_lua:Lua 引擎所使用的記憶體大小(以位元組為單位);
  ●  mem_fragmentation_ratio:used_memory_rss 和 used_memory 之間的比率;
  ●  mem_allocator:在編譯時指定的, Redis 所使用的記憶體分配器。可以是 libc 、 jemalloc 或者 tcmalloc ;

在理想情況下,used_memory_rss 的值應該只比 used_memory 稍微高一點兒。當 rss > used 兩者的值相差較大時,表示存在(內部或外部的)記憶體碎片。記憶體碎片的比率可以通過 mem_fragmentation_ratio 的值看出;當 used > rss 時,表示 Redis 的部分記憶體被作業系統換出到交換空間了,在這種情況下,操作可能會產生明顯的延遲。
由於 Redis無法控制如何將其分配對映到記憶體頁,因此高使用率的記憶體 rss通常是記憶體使用量激增的結果。當 Redis 釋放記憶體時,分配器可能會,也可能不會,將記憶體返還給作業系統。如果 Redis 釋放了記憶體,卻沒有將記憶體返還給作業系統,那麼 used_memory 的值可能和作業系統顯示的 Redis 記憶體佔用並不一致。檢視 used_memory_peak 的值可以驗證這種情況是否發生。

十一、Redis 效能檢視與監控常用工具
redis-benchmark:Redis 基準資訊,Redis伺服器效能檢測。如下:100個併發連線,100000個請求,檢測 host=localhost 埠=6379的 Redis伺服器效能:

redis-benchmark -h localhost -p 6379 -c 100 -n 100000