Redis指标说明

本文基于Redis最新unstable版本下,执行info命令后,返回的各项指标进行解释。并对其中需要特别注意的指标进行指出说明。
并会对阿里云info进行简单对比。区分阿里云对info进行了哪些方面的改造。

info可选命令值

info这个命令的判断实现是在server.c->genRedisInfoString(char *section)函数中。根据不同的section返回不同的info信息。
section可选值有以下这些:

  • 空 or all or default:大部分简要的信息
  • clients:客户端相关信息
  • memory:内存使用相关信息
  • persistence:RDB 和 AOF 的相关信息
  • stats:一般统计信息
  • replication:主/从复制信息
  • cpu:CPU 计算量统计信息
  • cluster:Redis 集群信息
  • keyspace:数据库相关的统计信息
  • commandstats:Redis 命令统计信息

info信息介绍

unstable信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
127.0.0.1:6379> info
# Server
redis_version:999.999.999 // redi服务器版本
redis_git_sha1:d044e33c // Git SHA1
redis_git_dirty:1 // Git dirty flag
redis_build_id:f0892bae2ab3d928 // redis build 版本
redis_mode:standalone // redis运行模式
os:Darwin 19.4.0 x86_64 // 运行redis服务的操作系统
arch_bits:64 // 服务器架构,32位or64位
multiplexing_api:kqueue // redis所使用的事件处理机制
atomicvar_api:atomic-builtin // 原子处理API
gcc_version:4.2.1 // 编译Reedis时使用的GCC版本
process_id:87804 // Redis服务进程PID
run_id:c7373afe697afdd775ab4220091574652e10354b // Redis服务器的随机标识符
tcp_port:6379 // TCP/IP端口
uptime_in_seconds:37 // 服务器启动至今的时间,单位秒
uptime_in_days:0 // 服务器启动至今的时间,单位天
hz:10 // redis内部调用频率,每秒运行多少次serverCron
configured_hz:10 // 配置文件设置的频率数
lru_clock:10750326 // 自增时钟,用于管理LRU管理,每执行一次serverCron更新一次
executable:/Users/hzb/redis_github/redis_debug/cmake-build-debug/src/redis-server // 执行文件
config_file: // 配置文件路径

# Clients
connected_clients:2 // 连接的客户端数
client_recent_max_input_buffer:2 // 当前客户端连接中,最大的输入缓冲区大小
client_recent_max_output_buffer:0 // 当前客户端连接中,最大的输出缓冲区大小
blocked_clients:0 // 正在等待你阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端数

# Memory
used_memory:1082368 // 当前内存使用量,byte为单位
used_memory_human:1.03M // 以可读方式显示当前内存使用量
used_memory_rss:5779456 // 从操作系统层面,返回redis已分配的内存总量,这个值与ps、top等命令输出的一样
used_memory_rss_human:5.51M // 可读方式显示已分配总量
used_memory_peak:1082368 // redis内存使用峰值
used_memory_peak_human:1.03M // 已可读方式显示内存使用峰值
used_memory_peak_perc:100.15% // (used_memory/ used_memory_peak) *100%
used_memory_overhead:1066024 // Redis为了维护数据集内部机制所需的内存开销,包括客户端输出缓冲区、查询缓冲区、AOF重写缓冲区、backlog等
used_memory_startup:998672 // Redis服务器启动时消耗的内存
used_memory_dataset:16344 // 数据真实使用的内存量。(used_memory—used_memory_overhead)
used_memory_dataset_perc:19.53% // 数据占用内存占使用内存比。(100%*(used_memory_dataset/(used_memory—used_memory_startup)))
allocator_allocated:1035760 //
allocator_active:5741568
allocator_resident:5741568
total_system_memory:17179869184 // 总系统内存
total_system_memory_human:16.00G
used_memory_lua:37888 // Lua引擎使用内存
used_memory_lua_human:37.00K
used_memory_scripts:0
used_memory_scripts_human:0B
number_of_cached_scripts:0
maxmemory:0 // 设置的最大内存使用量。默认为0,表示不限制
maxmemory_human:0B
maxmemory_policy:noeviction // 淘汰策略
allocator_frag_ratio:5.54 // 碎片率
allocator_frag_bytes:4705808 // 碎片大小
allocator_rss_ratio:1.00 // 常驻内存比例
allocator_rss_bytes:0 // 常驻内存大小
rss_overhead_ratio:1.01 // 常驻内存开销比例
rss_overhead_bytes:37888 // 常驻内存开销大小
mem_fragmentation_ratio:5.58 // 碎片率(used_memory_rss/ used_memory) 正常在(1-1.6)之间
mem_fragmentation_bytes:4743696 // 内存碎片大小
mem_not_counted_for_evict:0 // 被驱逐的内存
mem_replication_backlog:0 // Redis复制积压缓冲区内存
mem_clients_slaves:0 // Redis节点客户端消耗内存
mem_clients_normal:66632 // Rediis常规客户端消耗内存
mem_aof_buffer:0 // AOF使用内存
mem_allocator:libc // 内存分配器
active_defrag_running:0 // 碎片整理是否处于活动状态
lazyfree_pending_objects:0 // 0-不存在延迟释放的挂起对象

# Persistence
loading:0 // 服务器是否正在载入持久化文件
rdb_changes_since_last_save:0 // 离最近一次成功生成rdb文件,写入命令的个数,即有多少个写入命令没有持久化
rdb_bgsave_in_progress:0 // 服务器是否正在创建rdb文件
rdb_last_save_time:1587808593 // 离最近一次成功创建rdb文件的时间戳。当前时间戳 - rdb_last_save_time=多少秒未成功生成rdb文件
rdb_last_bgsave_status:ok // 最近一次rdb持久化是否成功
rdb_last_bgsave_time_sec:-1 // 最近一次成功生成rdb文件耗时秒数
rdb_current_bgsave_time_sec:-1 // 如果服务器正在创建rdb文件,那么这个域记录的就是当前的创建操作已经耗费的秒数
rdb_last_cow_size:0 // RDB过程中父进程与子进程相比执行了多少修改(包括读缓冲区,写缓冲区,数据修改等)。
aof_enabled:0 // 是否开启了aof
aof_rewrite_in_progress:0 // 标识aof的rewrite操作是否在进行中
aof_rewrite_scheduled:0 // 正在等待执行rewrite任务个数
aof_last_rewrite_time_sec:-1 // 最近一次aof rewrite耗费的时长
aof_current_rewrite_time_sec:-1 // 如果rewrite操作正在进行,则记录所使用的时间,单位秒
aof_last_bgrewrite_status:ok // 上次bgrewriteaof操作的状态
aof_last_write_status:ok // 上次aof写入状态
aof_last_cow_size:0 // AOF过程中父进程与子进程相比执行了多少修改(包括读缓冲区,写缓冲区,数据修改等)。

# Stats
total_connections_received:2 // 新创建连接的个数
total_commands_processed:3 // redis处理命令总数
instantaneous_ops_per_sec:0 // redis当前的QPS
total_net_input_bytes:62 // redis网络入口流量字节数
total_net_output_bytes:39355 // redis网络出口流量字节数
instantaneous_input_kbps:0.00 // redis网络入口kps
instantaneous_output_kbps:0.00 // redis网络出口kps
rejected_connections:0 // 拒绝的连接个数
sync_full:0 // 主从完全同步成功次数
sync_partial_ok:0 // 主从部分同步成功次数
sync_partial_err:0 // 主从部分同步失败次数
expired_keys:0 // 运行以来过期的key的数量
expired_stale_perc:0.00 // 过期的比率
expired_time_cap_reached_count:0 // 过期计数
evicted_keys:0 // 运行以来剔除(超过了maxmemory后)的key的数量
keyspace_hits:0 // 命中次数
keyspace_misses:0 // 没命中次数
pubsub_channels:0 // 当前使用中的频道数量
pubsub_patterns:0 // 当前使用的模式的数量
latest_fork_usec:0 // 最近一次fork操作阻塞redis进程的耗时数,单位微秒
migrate_cached_sockets:0 // 是否已经缓存了到该地址的连接
slave_expires_tracked_keys:0 // 从实例到期key数量
active_defrag_hits:0 // 主动碎片整理命中次数
active_defrag_misses:0 // 主动碎片整理未命中次数
active_defrag_key_hits:0 // 主动碎片整理key命中次数
active_defrag_key_misses:0 // 主动碎片整理key未命中次数

# Replication
role:master // 实例角色
connected_slaves:0 // 连接的slave实例个数
master_replid:59e5c4b387f62e131a284ca4a144152cbc38dd2b // 主实例启动随机字符串
master_replid2:0000000000000000000000000000000000000000 // 主实例启动随机字符串2
master_repl_offset:0 // 主从同步偏移量
second_repl_offset:-1 // 主从同步偏移量2,此值如果和上面的offset相同说明主从一致没延迟
repl_backlog_active:0 // 复制积压缓冲区是否开启
repl_backlog_size:1048576 // 复制积压缓冲大小
repl_backlog_first_byte_offset:0 // 复制缓冲区里偏移量的大小
repl_backlog_histlen:0 // 此值等于 master_repl_offset - repl_backlog_first_byte_offset,该值不会超过repl_backlog_size的大小

# CPU
used_cpu_sys:0.023950 // 所有redis主进程在核心态所占用的CPU时求和累计起来
used_cpu_user:0.021295 // 所有redis主进程在用户态所占用的CPU时求和累计起来
used_cpu_sys_children:0.000000 // 后台进程在核心态所占用的CPU时求和累计起来
used_cpu_user_children:0.000000 // 后台进程在用户态所占用的CPU时求和累计起来

# Cluster
cluster_enabled:0 // 是否开启了集群模式

# Keyspace
db0:keys=14,expires=0,avg_ttl=0 // key的数量,以及带有生存期的key的数,平均存活时间

127.0.0.1:6379> info commandstats
# Commandstats
cmdstat_get:calls=1,usec=16,usec_per_call=16.00 // 命令:调用次数,消耗的时间(微秒),消耗时间平均值(微秒)
cmdstat_info:calls=1,usec=45,usec_per_call=45.00
cmdstat_command:calls=1,usec=1454,usec_per_call=1454.00

阿里云信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
r-2ze48c70febc6e34.redis.rds.aliyuncs.com:6379> info
# Server
redis_version:4.0.11
redis_git_sha1:0b2746f2
redis_git_dirty:1
redis_build_id:5cfe6fcdd30f0fbc
redis_mode:standalone
os:Linux
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:0.0.0
process_id:48004
run_id:d61d98f1f9489bbc0f790d5a7cee510c62aa6614
tcp_port:6379
uptime_in_seconds:648333
uptime_in_days:7
hz:10
lru_clock:10767429
executable:
config_file:

# Clients
connected_clients:18
client_longest_output_list:0
client_biggest_input_buf:14
blocked_clients:0

# Memory
used_memory:249353384
used_memory_human:237.80M
used_memory_rss:283426816
used_memory_rss_human:270.30M
used_memory_peak:279685640
used_memory_peak_human:266.73M
used_memory_peak_perc:89.15%
used_memory_overhead:145987838
used_memory_startup:7985288
used_memory_dataset:103365546
used_memory_dataset_perc:42.82%
used_memory_lua:44032
used_memory_lua_human:43.00K
used_memory_scripts:488
used_memory_scripts_human:488B
number_of_cached_scripts:1
maxmemory:1073741824
maxmemory_human:1.00G
maxmemory_policy:volatile-lru
mem_fragmentation_ratio:1.14
mem_allocator:jemalloc-5.1.0
active_defrag_running:0
lazyfree_pending_objects:0
oom_err_count:0

# Stats
total_connections_received:858268
total_commands_processed:336711164
instantaneous_ops_per_sec:774
total_net_input_bytes:17239795209
total_net_output_bytes:49608006979
instantaneous_input_kbps:33.74
instantaneous_output_kbps:201.54
rejected_connections:0
rejected_connections_status:0
sync_full:4
sync_partial_ok:1
sync_partial_err:0
expired_keys:9241799
expired_stale_perc:11.51
expired_time_cap_reached_count:0
evicted_keys:0
evicted_keys_per_sec:0
keyspace_hits:106766672
keyspace_misses:205934497
hits_per_sec:405.50
misses_per_sec:338.25
hit_rate_percentage:54.52
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:11205
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0
traffic_control_input:0
traffic_control_input_status:0
traffic_control_output:0
traffic_control_output_status:0
total_bigkeys:0
bigkeys_status:0
stat_avg_rt:2
stat_max_rt:428
pacluster_migrate_sum_rt:0
pacluster_migrate_max_rt:0
pacluster_migrate_qps:0
pacluster_import_sum_rt:0
pacluster_import_max_rt:0
pacluster_import_qps:0
pacluster_migrate_start_time:0
pacluster_importing_start_time:0

# CPU
used_cpu_sys:4143.00
used_cpu_user:3553.77
used_cpu_sys_children:2.71
used_cpu_user_children:26.16

# Cluster
cluster_enabled:0
databases:256
nodecount:1

# paCluster
pacluster_enabled:0

# Keyspace
db0:keys=1790098,expires=319664,avg_ttl=9670198

阿里云改造

通过对比,可以看到阿里云对info中的部分信息进行改造。
主要有:

  1. 隐藏了Persistence持久话信息。这对我们排查问题时,无法确认是否因为持久化造成。
  2. 隐藏了Replication主从复制信息。
  3. Stats状态中的统计信息增加了以下统计信息。主要包含(bigkeys统计、rt信息、集群相关的一些信息)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    total_bigkeys:0
    bigkeys_status:0
    stat_avg_rt:2
    stat_max_rt:428
    pacluster_migrate_sum_rt:0
    pacluster_migrate_max_rt:0
    pacluster_migrate_qps:0
    pacluster_import_sum_rt:0
    pacluster_import_max_rt:0
    pacluster_import_qps:0
    pacluster_migrate_start_time:0
    pacluster_importing_start_time:0
  4. 新增了paCluster

  5. Cluster中的信息进行改造
  6. 版本区别,Redis新版本中。将client_longest_output_list、client_biggest_input_buf修改成了client_recent_max_input_buffer、client_recent_max_output_buffer
  7. info commandstats增加了其他指标

需要监控的参数

  • connected_clients: 当前连接客户端数
  • client_longest_output_list:客户端中最长的输出缓冲区大小
  • client_biggest_input_buf:最大的输入缓冲区大小
  • used_memory:当前使用内存量
  • used_memory_peak:内存使用峰值
  • used_memory_overhead:维护消耗内存
  • maxmemory:允许使用最大内存
  • mem_fragmentation_ratio:内存碎片率
  • mem_replication_backlog:复制积压缓冲区大小
  • mem_clients_slaves:节点消耗内存量
  • mem_clients_normal:常规客户端消耗内存量
  • rdb_last_save_time:最近一次rdb持久化时间
  • rdb_last_bgsave_status:最近一次rdb持久化状态
  • rdb_last_bgsave_time_sec:最近一次rdb持久化消耗时间
  • rdb_last_cow_size:rdb持久化时cow消耗内存
  • total_connections_received:新创建连接数(取差值)
  • instantaneous_ops_per_sec:OPS
  • instantaneous_input_kbps:输入带宽
  • instantaneous_output_kbps:输出带宽
  • expired_keys:已过期的key(取差值)
  • evicted_keys:剔除的key(取差值)
  • keyspace_hits:命中数(取比例)
  • keyspace_misses:未命中数。(取比例)
  • connected_slaves:当前连接slave个数
  • master_repl_offset-second_repl_offset:主从延迟
  • Keyspace:各DBkey信息