《Redis INFO 命令输出详解》
info 是 Redis 最常用的监控命令,一条输出即可了解实例的运行状态、内存、持久化、复制等关键信息。本文按 section 逐字段解释其含义,为 Redis 排障与性能调优提供参考。
执行方式:
redis-cli info
redis-cli info server # 只看某个 section
redis-cli info memory
1 Server
server 段展示实例自身的基础信息:
redis_version:Redis 服务器版本。redis_git_sha1:编译所用 Git SHA1。redis_git_dirty:Git dirty flag。redis_build_id:构建 ID。redis_mode:运行模式,standalone(单机)或 cluster(集群)。os:宿主操作系统。arch_bits:架构(32/64 位)。multiplexing_api:事件处理机制,Linux 通常为 epoll。atomicvar_api:原子变量处理 API。gcc_version:编译时使用的 GCC 版本。process_id:服务器进程 PID。run_id:服务器随机标识符,用于 Sentinel 与集群。tcp_port:TCP/IP 监听端口。uptime_in_seconds:启动以来的秒数。uptime_in_days:启动以来的天数。hz:serverCron 每秒执行次数(默认 10,用于关闭超时客户端、清理过期 key 等)。lru_clock:自增时钟,用于 LRU 管理,每 100ms(1000ms/hz)更新一次。executable:可执行文件路径。config_file:配置文件路径。
2 Clients
客户端连接情况:
connected_clients:已连接客户端数量(不含从属服务器)。client_longest_output_list:当前连接中客户端最长的输出列表。client_biggest_input_buf:当前连接中最大的输入缓冲区。blocked_clients:正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端数量。
3 Memory
内存使用是排查 OOM 与性能问题的重点:
used_memory:Redis 分配器分配的内存总量(字节)。used_memory_human:人类可读的内存总量。used_memory_rss:操作系统视角的内存常驻集大小(与top/ps一致)。used_memory_rss_human:人类可读的常驻集大小。used_memory_peak:内存消耗峰值(字节)。used_memory_peak_human:人类可读的内存峰值。used_memory_peak_perc:(used_memory / used_memory_peak) * 100%。used_memory_overhead:维护数据集的内部开销,含客户端输出缓冲、查询缓冲、AOF 重写缓冲与主从复制 backlog。used_memory_startup:启动时消耗的内存。used_memory_dataset:used_memory - used_memory_overhead。used_memory_dataset_perc:100% * used_memory_dataset / (used_memory - used_memory_startup)。total_system_memory/total_system_memory_human:整机物理内存。used_memory_lua/used_memory_lua_human:Lua 脚本缓存占用的内存。maxmemory:实例最大内存配置。maxmemory_policy:达到 maxmemory 时的淘汰策略。mem_fragmentation_ratio:used_memory_rss / used_memory。明显大于 1 表示碎片偏高。mem_allocator:内存分配器(如 jemalloc)。active_defrag_running:0 无碎片整理任务,1 有任务正在运行。lazyfree_pending_objects:积压的惰性删除对象数量(0 表示无)。
4 Persistence
持久化状态:
loading:服务器是否正在载入持久化文件。rdb_changes_since_last_save:最近一次成功生成 RDB 之后未持久化的写命令数。rdb_bgsave_in_progress:是否正在生成 RDB 文件。rdb_last_save_time:最近一次成功创建 RDB 的时间戳。rdb_last_bgsave_status:最近一次 RDB 持久化状态(ok/err)。rdb_last_bgsave_time_sec:最近一次 RDB 生成耗时(秒)。rdb_current_bgsave_time_sec:正在进行的 RDB 已耗时(秒)。rdb_last_cow_size:RDB 过程中父进程与子进程相比执行的修改量。aof_enabled:是否开启 AOF。aof_rewrite_in_progress:AOF rewrite 是否进行中。aof_rewrite_scheduled:是否有待执行的 rewrite(rewrite 子进程忙时,客户端 bgrewriteaof 会被排程)。aof_last_rewrite_time_sec:最近一次 AOF rewrite 耗时(秒)。aof_current_rewrite_time_sec:当前 rewrite 已耗时(秒)。aof_last_bgrewrite_status:最近一次 bgrewriteaof 状态。aof_last_write_status:最近一次 AOF 写入状态。aof_last_cow_size:AOF 过程中父子进程的修改量。
5 Stats
运行统计,常用于观察 QPS 与网络:
total_connections_received:累计新建连接数。该值过高说明短连接严重或连接池使用不当。total_commands_processed:处理的命令总数。instantaneous_ops_per_sec:当前 QPS(每秒执行命令数)。total_net_input_bytes/total_net_output_bytes:累计网络入/出流量字节数。instantaneous_input_kbps/instantaneous_output_kbps:瞬时网络入/出速率(KB/s)。rejected_connections:因达到 maxclients 被拒绝的连接数。sync_full:主从全量同步成功次数。sync_partial_ok:主从部分同步成功次数。sync_partial_err:主从部分同步失败次数。expired_keys:运行以来过期的 key 数量。expired_stale_perc:过期比率。expired_time_cap_reached_count:过期主循环耗时上限命中次数。evicted_keys:运行以来因超过 maxmemory 被剔除的 key 数量。keyspace_hits/keyspace_misses:命中/未命中次数。pubsub_channels/pubsub_patterns:正在使用的频道数与模式频道数。latest_fork_usec:最近一次 fork 阻塞进程耗时(微秒)。migrate_cached_sockets:是否已缓存到目标地址的连接。slave_expires_tracked_keys:从实例到期 key 数量。active_defrag_hits/active_defrag_misses:主动碎片整理命中/未命中次数。active_defrag_key_hits/active_defrag_key_misses:主动碎片整理 key 命中/未命中次数。
6 Replication
主从同步关键指标:
role:实例角色,master 或 slave。connected_slaves:连接的 slave 实例个数。master_replid:主实例复制 ID。master_replid2:第二个复制 ID。master_repl_offset:主从同步偏移量。second_repl_offset:第二复制流偏移量。repl_backlog_active:复制积压缓冲区是否开启。repl_backlog_size:复制积压缓冲区大小。repl_backlog_first_byte_offset:积压缓冲区起始偏移量。repl_backlog_histlen:= master_repl_offset - repl_backlog_first_byte_offset,不会超过 repl_backlog_size。
7 CPU
used_cpu_sys:主进程核心态累计 CPU 时间。used_cpu_user:主进程用户态累计 CPU 时间。used_cpu_sys_children:后台子进程核心态累计 CPU 时间。used_cpu_user_children:后台子进程用户态累计 CPU 时间。
8 Commandstats
命令使用统计快照,逐命令统计(cmdstat_xxx),如 cmdstat_set、cmdstat_ping、cmdstat_del、cmdstat_psync、cmdstat_keys、cmdstat_hmset、cmdstat_hgetall、cmdstat_command、cmdstat_info、cmdstat_replconf、cmdstat_client 等,可据此判断热点命令与慢命令。
9 Cluster
cluster_enabled:实例是否启用集群模式。
10 Keyspace
db0:db0 的 key 总数、带过期时间的 key 数与平均存活时间,如db0:keys=100,expires=20,avg_ttl=1000。
11 结语
- 日常监控核心看:
instantaneous_ops_per_sec(QPS)、used_memory_human(内存)、mem_fragmentation_ratio(碎片)、master_repl_offset(复制滞后)、keyspace_hits/keyspace_misses(命中率)。 - 参考文章:redis info 输出详解。
阅读 —
·
全站 —