redis的info指令详解
在使用 Redis 時,時常會遇到很多問題需要診斷,在診斷之前需要了解 Redis 的運行狀態,通過強大的 Info 指令,你可以清晰地知道 Redis 內部一系列運行參數。
Info 指令顯示的信息非常繁多,分為 9 大塊,每個塊都有非常多的參數,這 9 個塊分別是:
1、Server 服務器運行的環境參數
2、Clients 客戶端相關信息
3、Memory 服務器運行內存統計數據
4、Persistence 持久化信息
5、Stats 通用統計數據
6、Replication 主從復制相關信息
7、CPU CPU 使用情況
8、Cluster 集群信息
9、KeySpace 鍵值對統計數量信息
Info 可以一次性獲取所有的信息,也可以按塊取信息。
# 獲取所有信息 > info # 獲取內存相關信息 > info memory # 獲取復制相關信息 > info replicationRedis 每秒執行多少次指令?
這個信息在 Stats 塊里,可以通過 info stats 看到。
# ops_per_sec: operations per second,也就是每秒操作數 > redis-cli info stats |grep ops instantaneous_ops_per_sec:789以上,表示 ops 是 789,也就是所有客戶端每秒會發送 789 條指令到服務器執行。極限情況下,Redis 可以每秒執行 10w 次指令,CPU 幾乎完全榨干。如果 qps 過高,可以考慮通過 monitor 指令快速觀察一下究竟是哪些 key 訪問比較頻繁,從而在相應的業務上進行優化,以減少 IO 次數。monitor 指令會瞬間吐出來巨量的指令文本,所以一般在執行monitor 后立即 ctrl+c 中斷輸出。
> redis-cli monitor這個信息在 Clients 塊里,可以通過 info clients 看到。
> redis-cli info clients # Clients connected_clients:124 # 這個就是正在連接的客戶端數量 client_longest_output_list:0 client_biggest_input_buf:0 blocked_clients:0這個信息也是比較有用的,通過觀察這個數量可以確定是否存在意料之外的連接。如果發現這個數量不對勁,接著就可以使用 client list 指令列出所有的客戶端鏈接地址來確定源 頭。
關于客戶端的數量還有個重要的參數需要觀察,那就是 rejected_connections,它表示因為超出最大連接數限制而被拒絕的客戶端連接次數,如果這個數字很大,意味著服務器的最大連接數設置的過低需要調整 maxclients 參數。
> redis-cli info stats |grep reject rejected_connections:0Redis 內存占用多大 ?
這個信息在 Memory 塊里,可以通過 info memory 看到。
> redis-cli info memory | grep used | grep human used_memory_human:827.46K # 內存分配器 (jemalloc) 從操作系統分配的內存總量 used_memory_rss_human:3.61M # 操作系統看到的內存占用 ,top 命令看到的內存 used_memory_peak_human:829.41K # Redis 內存消耗的峰值 used_memory_lua_human:37.00K # lua 腳本引擎占用的內存大小如果單個 Redis 內存占用過大,并且在業務上沒有太多壓縮的空間的話,可以考慮集群化了。
復制積壓緩沖區多大?
這個信息在 Replication 塊里,可以通過 info replication 看到。
> redis-cli info replication |grep backlog repl_backlog_active:0 repl_backlog_size:1048576 # 這個就是積壓緩沖區大小 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0復制積壓緩沖區大小非常重要,它嚴重影響到主從復制的效率。當從庫因為網絡原因臨 時斷開了主庫的復制,然后網絡恢復了,又重新連上的時候,這段斷開的時間內發生在 master 上的修改操作指令都會放在積壓緩沖區中,這樣從庫可以通過積壓緩沖區恢復中斷的 主從同步過程。
積壓緩沖區是環形的,后來的指令會覆蓋掉前面的內容。如果從庫斷開的時間過長,或 者緩沖區的大小設置的太小,都會導致從庫無法快速恢復中斷的主從同步過程,因為中間的修改指令被覆蓋掉了。這時候從庫就會進行全量同步模式,非常耗費 CPU 和網絡資源。 如果有多個從庫復制,積壓緩沖區是共享的,它不會因為從庫過多而線性增長。如果實例的修改指令請求很頻繁,那就把積壓緩沖區調大一些,幾十個 M 大小差不多了,如果很 閑,那就設置為幾個 M。
> redis-cli info stats | grep sync sync_full:0 sync_partial_ok:0 sync_partial_err:0 # 半同步失敗次數通過查看 sync_partial_err 變量的次數來決定是否需要擴大積壓緩沖區,它表示主從半同步復制失敗的次數。
總結
以上是生活随笔為你收集整理的redis的info指令详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis的过期策略
- 下一篇: 枚举类的使用-使用实例域来替代序数