Redis運維和開發學習筆記(6) 監控Redis工作狀態-info命令
文章目錄
- Redis運維和開發學習筆記(6) 監控Redis工作狀態-info命令
- info server
- info client
- info memory
- info persistence
- info stats
- info commandstats
- info cpu
- info cluster
- info keyspace
info server
Redis服務器相關的通用信息
127.0.0.1:6379> info server
# Server
redis_version:3.2.12 # Redis服務器的版本號。
redis_git_sha1:00000000 # Git SHA1。
redis_git_dirty:0 # GIT臟數據標志
redis_build_id:7897e7d0e13773f
redis_mode:standalone
os:Linux 3.10.0-957.21.3.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll # Redis使用的事件循環機制。
gcc_version:4.8.5
process_id:29581 # Redis服務器進程的進程號(PID)。
run_id:3739b19f38ecf64bac40b2b7704d799573f2d6c6 # 用于標識Redis服務器的隨機值(Redis的哨兵模式和集群模式會使用這個隨機值)。
tcp_port:6379 # TCP/IP的監聽端口。
uptime_in_seconds:2226082 # Redis服務器啟動至今的時間,以秒為單位。
uptime_in_days:25 # Redis服務器啟動至今的時間,以天為單位。
hz:10
lru_clock:5319706 # 每分鐘都會遞增的時鐘,用于LRU(Least Recently Used,最近最少使用)緩存管理。
executable:/root/redis-server # Redis服務器的可執行文件的路徑。
config_file:/etc/redis.conf # Redis服務器的配置文件的路徑。
info client
127.0.0.1:6379> info clients
# Clients
connected_clients:1 # 客戶端連接的數量(來自從機的連接除外)
client_longest_output_list:0 # 當前的客戶端連接之中,最長的輸出列表
client_biggest_input_buf:0 # 當前的客戶端連接之中,最大的輸入緩沖區
blocked_clients:0 # 由于阻塞調用(BLPOP、BRPOP、BRPOPLPUSH)而等待的客戶端的數量。
info memory
127.0.0.1:6379> info memory
# Memory
used_memory:812544 # Redis使用它的內存分配器(可以是標準的libc、jemalloc或tcmalloc分配器)分配的內存總量,以字節為單位。
used_memory_human:793.50K # Redis使用它的內存分配器分配的內存總量,顯示為用戶易于閱讀的格式。
used_memory_rss:2146304 # 操作系統所看到的為Redis分配的內存總量(也被稱為“駐留集大小(Resident Set Size)”)。這個內存總量是由諸如top(1)和ps(1)之類的工具報告的。
used_memory_rss_human:2.05M # 操作系統所看到的為Redis分配的內存總量,顯示為用戶易于閱讀的格式。
used_memory_peak:813552 # Redis消耗的內存峰值,以字節為單位。
used_memory_peak_human:794.48K # Redis消耗的內存峰值,顯示為用戶易于閱讀的格式。
total_system_memory:1927405568 # 系統內存總量,以字節為單位
total_system_memory_human:1.80G # 系統內存總量,顯示為用戶易于閱讀的格式
used_memory_lua:37888 # Lua腳本引擎使用的內存總量,以字節為單位。
used_memory_lua_human:37.00K # Lua腳本引擎使用的內存總量,顯示為用戶易于閱讀的格式。
maxmemory:0 # Redis能夠使用的最大內存上限(0表示沒有限制),以字節為單位。
maxmemory_human:0B # Redis能夠使用的最大內存上限,顯示為用戶易于閱讀的格式。
maxmemory_policy:noeviction # Redis使用的內存回收策略,可以是noeviction、allkeys-lru、volatile-lru、allkeys-random、volatile-random或volatile-ttl。
mem_fragmentation_ratio:2.64 # used_memory_rss和used_memory之間的比率。
mem_allocator:jemalloc-3.6.0 # Redis使用的內存分配器,在編譯時選擇指定。
在理想情況下,used_memory_rss的值只應當比used_memory的值稍微高一點。當常駐集內存(rss)遠大于已使用內存(used)時,這就意味著Redis服務器存在較多的內存碎片(內部的或外部的),這種情況可以通過檢查mem_fragmentation_ratio的值估計出來。當已使用內存(used)遠大于常駐集內存(rss)時,這就意味著有一部分Redis使用的內存被操作系統換出至磁盤了:可以預料到會產生明顯的延時。
因為,Redis無法控制如何將它分配的內存映射至內存頁面,當內存使用率飆升時,經常會導致較高的used_memory_rss值。
當Redis釋放內存時,會將內存歸還給分配器,然后分配器可能會(也可能不會)將內存歸還給操作系統。used_memory的值和操作系統報告的內存消耗值可能會有一些差異。這可能是由于Redis正在使用和釋放內存,但是釋放的內存尚未歸還給操作系統而導致的。通常,可以通過used_memory_peak的值來檢查Redis是否存在這種問題。
info persistence
127.0.0.1:6379> info persistence
# Persistence
loading:表示Redis是否正在加載一個轉儲文件的標志。
rdb_changes_since_last_save:從最近一次轉儲至今,RDB的修改次數。
rdb_bgsave_in_progress:表示Redis正在保存RDB的標志。
rdb_last_save_time:最近一次成功保存RDB的時間戳,基于Epoch時間。
rdb_last_bgsave_status:最近一次RDB保存操作的狀態。
rdb_last_bgsave_time_sec:最近一次RDB保存操作消耗的時間,以秒為單位。
rdb_current_bgsave_time_sec:如果Redis正在執行RDB保存操作,那么這個字段表示已經消耗的時間,以秒為單位。
aof_enabled:表示Redis是否啟用AOF日志功能的標志。
aof_rewrite_in_progress:表示Redis是否正在執行一次AOF重寫操作的標志。
aof_rewrite_scheduled:表示一旦Redis正在執行的RDB保存操作完成之后,是否就會調度執行AOF重寫操作的標志。
aof_last_rewrite_time_sec:最近一次AOF重寫操作消耗的時間,以秒為單位。
aof_current_rewrite_time_sec:如果Redis正在執行AOF重寫操作,那么這個字段表示已經消耗的時間,以秒為單位。
aof_last_bgrewrite_status:ok:最近一次AOF重寫操作的狀態。
aof_last_write_status:ok
- 如果啟用了AOF功能,那么persistence分段將會新增額外的字段,如下所示:
aof_current_size:AOF文件當前的大小。aof_base_size:最近一次啟動或重寫時的AOF文件的大小。aof_pending_rewrite:表示一旦Redis正在執行的RDB保存操作完成之后,是否就會調度執行AOF重寫操作的標志。aof_buffer_length:AOF緩沖區的大小。aof_rewrite_buffer_length:AOF重寫緩沖區的大小。aof_pending_bio_fsync:表示后臺I/O隊列中的fsync的暫停任務。aof_delayed_fsync:被延遲的fsync調用的計數器。
- 如果Redis正在執行加載操作,那么persistence分段將會新增額外的字段,如下所示:
loading_start_time:開始執行加載轉儲文件操作的時間戳,基于Epoch時間。loading_total_bytes:轉儲文件的總大小。loading_loaded_bytes:已經加載的轉儲文件的大小,以字節為單位。loading_loaded_perc:已經加載的轉儲文件的百分比。loading_eta_seconds:預計完成加載轉儲文件需要消耗的時間,以秒為單位。
info stats
127.0.0.1:6379> info stats
# Stats
total_connections_received:Redis服務器接受的連接總數。
total_commands_processed:Redis服務器處理的命令總數。
instantaneous_ops_per_sec:每秒鐘處理的命令數量。
total_net_input_bytes:通過網絡接收的數據總量,以字節為單位。
total_net_output_bytes:通過網絡發送的數據總量,以字節為單位。
instantaneous_input_kbps:每秒鐘接收數據的速率,以kbps為單位。
instantaneous_output_kbps:每秒鐘發送數據的速率,以kbps為單位。
rejected_connections:Redis服務器由于maxclients限制而拒絕的連接數量。
sync_full:Redis主機和從機進行完全同步的次數。
sync_partial_ok:Redis服務器接受PSYNC請求的次數。
sync_partial_err:Redis服務器拒絕PSYNC請求的次數。
expired_keys:鍵過期事件的總數。
evicted_keys:由于maxmemory限制,而被回收內存的鍵的總數。
keyspace_hits:在主字典中成功查找到鍵的次數。
keyspace_misses:在主字典中未能成功查找到鍵的次數。
pubsub_channels:客戶端訂閱的發布/訂閱頻道的總數量。
pubsub_patterns:客戶端訂閱的發布/訂閱模式的總數量。
latest_fork_usec:最近一次fork操作消耗的時間,以微秒為單位。
migrate_cached_sockets:遷移已緩存的套接字的數量。
info commandstats
127.0.0.1:6379> info commandstats
# Commandstats
cmdstat_get:calls=5,usec=30,usec_per_call=6.00
cmdstat_set:calls=11,usec=140,usec_per_call=12.73
cmdstat_del:calls=1,usec=5,usec_per_call=5.00
cmdstat_exists:calls=3,usec=10,usec_per_call=3.33
cmdstat_sadd:calls=2,usec=47,usec_per_call=23.50
cmdstat_mset:calls=1,usec=23,usec_per_call=23.00
cmdstat_expire:calls=1,usec=8,usec_per_call=8.00
cmdstat_keys:calls=4,usec=79,usec_per_call=19.75
cmdstat_dbsize:calls=1,usec=2,usec_per_call=2.00
cmdstat_type:calls=2,usec=11,usec_per_call=5.50
cmdstat_info:calls=104,usec=6071,usec_per_call=58.38
cmdstat_ttl:calls=4,usec=20,usec_per_call=5.00
cmdstat_client:calls=5,usec=78,usec_per_call=15.60
cmdstat_command:calls=7,usec=4174,usec_per_call=596.29
info cpu
127.0.0.1:6379> info cpu
# CPU
used_cpu_sys:1300.85
used_cpu_user:780.14
used_cpu_sys_children:0.01
used_cpu_user_children:0.00
info cluster
127.0.0.1:6379> info cluster
# Cluster
cluster_enabled:0 # 表示是否啟用Redis集群功能的標志。
info keyspace
127.0.0.1:6379> info keyspace
# Keyspace
db0:keys=6,expires=0,avg_ttl=0
# 一個XXX表示數據庫的編號,第二個XXX表示鍵的數量,第三個XXX表示具有過期時間的鍵的數量,第四個XXX表示鍵的平均生存時間。