Redis狀態和資訊查看

來源:互聯網
上載者:User

標籤:

轉自:http://my.oschina.net/tongyufu/blog/405612

 

redis-cli串連伺服器後,使用info命令查看Redis資訊和狀態:

INFO [section]

以一種易於解釋(parse)且易於閱讀的格式,返回關於 Redis 伺服器的各種資訊和統計數值。

通過給定可選的參數 section ,可以讓命令只返回某一部分的資訊:

  • 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 部分記錄了已串連用戶端的資訊,它包含以下域:

    • connected_clients : 已串連用戶端的數量(不包括通過從屬伺服器串連的用戶端)

    • client_longest_output_list : 當前串連的用戶端當中,最長的輸出資料行表

    • client_longest_input_buf : 當前串連的用戶端當中,最大輸入緩衝

    • blocked_clients : 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的用戶端的數量

  • memory 部分記錄了伺服器的記憶體資訊,它包含以下域:

    在理想情況下, used_memory_rss 的值應該只比 used_memory 稍微高一點兒。

    當 rss > used ,且兩者的值相差較大時,表示存在(內部或外部的)記憶體片段。

    記憶體片段的比率可以通過 mem_fragmentation_ratio 的值看出。

    當 used > rss 時,表示 Redis 的部分記憶體被作業系統換出到交換空間了,在這種情況下,操作可能會產生明顯的延遲。

    Because Redis does not have control over how its allocations are mapped to memory pages, highused_memory_rss is often the result of a spike in memory usage.

    當 Redis 釋放記憶體時,分配器可能會,也可能不會,將記憶體返還給作業系統。

    如果 Redis 釋放了記憶體,卻沒有將記憶體返還給作業系統,那麼 used_memory 的值可能和作業系統顯示的 Redis 記憶體佔用並不一致。

    查看 used_memory_peak 的值可以驗證這種情況是否發生。

    • 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 所使用的記憶體 Clerk。可以是 libc 、 jemalloc 或者 tcmalloc 。

  • persistence 部分記錄了跟 RDB 持久化和 AOF 持久化有關的資訊,它包含以下域:

    如果 AOF 持久化功能處於開啟狀態,那麼這個部分還會加上以下域:

    • aof_current_size : AOF 檔案目前的大小。

    • aof_base_size : 伺服器啟動時或者 AOF 重寫最近一次執行之後,AOF 檔案的大小。

    • aof_pending_rewrite : 一個標誌值,記錄了是否有 AOF 重寫操作在等待 RDB 檔案建立完畢之後執行。

    • aof_buffer_length : AOF 緩衝區的大小。

    • aof_rewrite_buffer_length : AOF 重寫緩衝區的大小。

    • aof_pending_bio_fsync : 後台 I/O 隊列裡面,等待執行的 fsync 調用數量。

    • aof_delayed_fsync : 被延遲的 fsync 調用數量。

    • loading : 一個標誌值,記錄了伺服器是否正在載入持久化檔案。

    • rdb_changes_since_last_save : 距離最近一次成功建立持久化檔案之後,經過了多少秒。

    • rdb_bgsave_in_progress : 一個標誌值,記錄了伺服器是否正在建立 RDB 檔案。

    • rdb_last_save_time : 最近一次成功建立 RDB 檔案的 UNIX 時間戳記。

    • rdb_last_bgsave_status : 一個標誌值,記錄了最近一次建立 RDB 檔案的結果是成功還是失敗。

    • rdb_last_bgsave_time_sec : 記錄了最近一次建立 RDB 檔案耗費的秒數。

    • rdb_current_bgsave_time_sec : 如果伺服器正在建立 RDB 檔案,那麼這個域記錄的就是當前的建立操作已經耗費的秒數。

    • aof_enabled : 一個標誌值,記錄了 AOF 是否處於開啟狀態。

    • aof_rewrite_in_progress : 一個標誌值,記錄了伺服器是否正在建立 AOF 檔案。

    • aof_rewrite_scheduled : 一個標誌值,記錄了在 RDB 檔案建立完畢之後,是否需要執行預約的 AOF 重寫操作。

    • aof_last_rewrite_time_sec : 最近一次建立 AOF 檔案耗費的時間長度。

    • aof_current_rewrite_time_sec : 如果伺服器正在建立 AOF 檔案,那麼這個域記錄的就是當前的建立操作已經耗費的秒數。

    • aof_last_bgrewrite_status : 一個標誌值,記錄了最近一次建立 AOF 檔案的結果是成功還是失敗。

  • 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() 操作耗費的毫秒數。

  • replication : 主/從複製資訊

    如果當前伺服器是一個從伺服器的話,那麼這個部分還會加上以下域:

    如果同步操作進行中,那麼這個部分還會加上以下域:

    如果主從伺服器之間的串連處於斷線狀態,那麼這個部分還會加上以下域:

    以下是一些總會出現的域:

    對於每個從伺服器,都會添加以下一行資訊:

    • slaveXXX : ID、IP 位址、連接埠號碼、串連狀態

    • connected_slaves : 已串連的從伺服器數量。

    • master_link_down_since_seconds : 主從伺服器串連斷開了多少秒。

    • master_sync_left_bytes : 距離同步完成還缺少多少位元組資料。

    • master_sync_last_io_seconds_ago : 距離最近一次因為 SYNC 操作而進行 I/O 已經過去了多少秒。

    • master_host : 主伺服器的 IP 位址。

    • master_port : 主伺服器的 TCP 監聽連接埠號碼。

    • master_link_status : 複製串連當前的狀態, up 表示串連正常, down 表示串連斷開。

    • master_last_io_seconds_ago : 距離最近一次與主伺服器進行通訊已經過去了多少秒鐘。

    • master_sync_in_progress : 一個標誌值,記錄了主伺服器是否正在與這個從伺服器進行同步。

    • role : 如果當前伺服器沒有在複製任何其他伺服器,那麼這個域的值就是 master ;否則的話,這個域的值就是slave 。注意,在建立複製鏈的時候,一個從伺服器也可能是另一個伺服器的主伺服器。

  • cpu 部分記錄了 CPU 的計算量統計資訊,它包含以下域:

    • used_cpu_sys : Redis 伺服器耗費的系統 CPU 。

    • used_cpu_user : Redis 伺服器耗費的使用者 CPU 。

    • used_cpu_sys_children : 後台進程耗費的系統 CPU 。

    • used_cpu_user_children : 後台進程耗費的使用者 CPU 。

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

    • cmdstat_XXX:calls=XXX,usec=XXX,usecpercall=XXX

  • cluster 部分記錄了和叢集有關的資訊,它包含以下域:

    • cluster_enabled : 一個標誌值,記錄集群功能是否已經開啟。

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

    • dbXXX:keys=XXX,expires=XXX

除上面給出的這些值以外, section 參數的值還可以是下面這兩個:

  • all : 返回所有資訊

  • default : 返回預設選擇的資訊

當不帶參數直接調用 INFO 命令時,使用 default 作為預設參數。

不同版本的 Redis 可能對返回的一些域進行了增加或刪減。

因此,一個健壯的用戶端程式在對 INFO 命令的輸出進行分析時,應該能夠跳過不認識的域,並且妥善地處理丟失不見的域。

  • 可用版本:

  • >= 1.0.0

  • 時間複雜度:

  • O(1)

  • 傳回值:

  • 具體請參見下面的測試代碼。

     1 # Server 2 redis_version:2.8.4 3 redis_git_sha1:00000000 4 redis_git_dirty:0 5 redis_build_id:8f6097d7914679ca 6 redis_mode:standalone 7 os:Linux 3.13.0-37-generic i686 8 arch_bits:32 9 multiplexing_api:epoll10 gcc_version:4.8.211 process_id:138012 run_id:c57b3c410a00d9a7ee3b2cf9eb72479d8097f32813 tcp_port:637914 uptime_in_seconds:3090515 uptime_in_days:016 hz:1017 lru_clock:52096018 config_file:/etc/redis/redis.conf19 20 # Clients21 connected_clients:122 client_longest_output_list:023 client_biggest_input_buf:024 blocked_clients:025 26 # Memory27 used_memory:42388028 used_memory_human:413.95K29 used_memory_rss:749568030 used_memory_peak:38609631 used_memory_peak_human:377.05K32 used_memory_lua:2252833 mem_fragmentation_ratio:17.6834 mem_allocator:jemalloc-3.4.135 36 # Persistence37 loading:038 rdb_changes_since_last_save:039 rdb_bgsave_in_progress:040 rdb_last_save_time:145224440441 rdb_last_bgsave_status:ok42 rdb_last_bgsave_time_sec:043 rdb_current_bgsave_time_sec:-144 aof_enabled:045 aof_rewrite_in_progress:046 aof_rewrite_scheduled:047 aof_last_rewrite_time_sec:-148 aof_current_rewrite_time_sec:-149 aof_last_bgrewrite_status:ok50 51 # Stats52 total_connections_received:353 total_commands_processed:254 instantaneous_ops_per_sec:055 rejected_connections:056 sync_full:057 sync_partial_ok:058 sync_partial_err:059 expired_keys:060 evicted_keys:061 keyspace_hits:162 keyspace_misses:063 pubsub_channels:064 pubsub_patterns:065 latest_fork_usec:98466 67 # Replication68 role:master69 connected_slaves:070 master_repl_offset:071 repl_backlog_active:072 repl_backlog_size:104857673 repl_backlog_first_byte_offset:074 repl_backlog_histlen:075 76 # CPU77 used_cpu_sys:2.3178 used_cpu_user:3.2679 used_cpu_sys_children:0.0080 used_cpu_user_children:0.0081 82 # Keyspace83 db0:keys=1,expires=0,avg_ttl=0

Redis狀態和資訊查看

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.