本章将对Redis的系统状态信息(info命令结果)和Redis的所有配置(包括Standalone、Sentinel、Cluster三种模式)做一个全面的梳理,希望本章能够成为Redis配置统计字典,协助大家分析和解决日常开发和运维中遇到的问题,主要内容如下:
□ info系统状态说明。
□ Sentinel配置说明。
□ Cluster配置说明。
info命令的使用方法有以下三种 :
□ info: 部分Redis系统状态统计信息。
□ info all: 全部Redis系统状态统计信息。
□ info section: 某一块的系统状态统计信息,其中 section可以忽略大小写。
例如,只对Redis的内存相关统计比较感兴趣,可以执行info memory,此时section =memory, 下面是info memory的结果:
127.0.0.1:6379> info memory
used_memory: 5209229784
used_memory_human: 4.85G
used_memory_rss: 6255316992
used_memory_peak:5828761544
used_memory_peak_human: 5.43G
used_memory_lua: 36864
mem_fragmentation_ratio: 1.20
mem_allocator: jemalloc-3.6.0
在运维的时候发现客户端有些异常,可以执行info clients,如以下信息反映了输出缓冲区存在溢出的情况:
127.0.0.1:6379> info clients
connected_clients:225
client_longest_output_list:245639
client_biggest_input_buf: 0
blocked_clients: 0
info all 命令包含Redis最全的系统状态信息,表14-1是 info all命令涉及的所有 section,其中每个模块名就是我们上面提到的section,例如info Server是查看Redis服务的基本信息。
表14-1 info 命令所有的 section
模块名
模块含义
Server
服务器信息
Clients
客户端信息
Memory
内存信息
Persistence
持久化信息
Stats
全局统计信息
Replication
复制信息
CPU
CPU消耗信息
Commandstats
命令统计信息
Cluster
集群信息
Keyspace
数据库键统计信息
下面将对每个模块进行详细说明,为了更加方便解释,我们直接结合线上一个运行的Redis实例进行说明。
1.Server
表14-2是 info Server模块的统计信息,包含了 Redis服务本身的一些信息,例如版本号、运行模式、操作系统的版本、TCP端口等。
表 14-2 info Server 模块统计信息
属性名
属性值
属性描述
redis version
3.0.7
Redis 服务版本
redis_git_sha1
00000000
Git SHA1
redis_git_dirty
0
Git dirty flag
redis_build_id
186eba9451cf9390
Redis build id
redis_mode
cluster
运行模式,分为: Cluster 、 Sentinel 、Standalone
os
Linux2.6.18-274.el5 x 86_64
Redis 所在机器的操作系统
arch_bits
64
架构(32或64位)
multiplexing api
epoll
Redis 所使用的事件处理机制
gcc_version
4.1.2
编译Redis时所使用的GCC版本
process_id
31524
Redis 服务进程的 PID
run_id
fd8b97739c469526f 640b8895a5084d669ed1 51f
Redis 服务的标识符
tcp_port
6384
监听端口
uptime_in_seconds
9753347
自Redis服务启动以来,运行的秒数
uptime_in_days
112
自Redis服务启动以来,运行的天数
hz
10
serverCron每秒运行次数
lru_clock
16388503
以分钟为单位进行自增的时钟 ,用于LRU管理
config_file
/opt/cachecloud/conf/ redis-cluster-6384 .conf
Redis 的配置文件
2.Client
表14-3是info Clients 模块的统计信息,包含了连接数、阻塞命令连接数、输入输出缓冲区等相关统计信息。
表 14-3 info Clients 模块统计信息
属性名
属性值
属性描述
connected_clients
262
当前客户端连接数
client_longestoutput_list
0
当前所有输出缓冲区中队列对象个数的最大值
client_biggest_input_buf
0
当前所有输入缓冲区中占用的最大容量
blocked_clients
0
正在等待阻塞命令(例如 BLPOP等)的客户端数量
3.Memory
表14-4是 info Memory 模块的统计信息,包含了 Redis 内存使用、系统内存使用、碎片率、内存分配器等相关统计信息。
表 14-4 info Memory 模块统计信息
属性名
属性值
属性描述
used_memory
183150904
Redis分配器分配的内存总量,也就是内部存储的所有数据内存占用量
used_memory_human
174.67M
以可读的格式返回 used_memory
used_memory_rss
428621824
从操作系统的角度, Redis 进程占用的物理内存总量
used_memory_peak
522768352
内存使用的最大值,表示 used_memory 的峰值
used_memory_peak_human
498.55M
以可读的格式返回 used_memory_peak
used_memory_lua
35840
Lua引擎所消耗的内存大小
mem_fragmentation_ratio
2.34
used_memory_rss/used_memory比值,表示内存碎片率
mem_allocator
jemalloc-3.6.0
Redis所使用的内存分配器。默认为: jemalloc
4.Persistence
表 14-5是 info Persistence 模块的统计信息,包含了RDB和 AOF两种持久化的一些统计信息。
表 14-5 info Persistence 模块统计信息
属性名
属性值
属性描述
loading
0
是否在加载持久化文件。0否,1是
rdb_changes_since_last_save
53308858
自上次RDB后,Redis 数据改动条数
rdb_bgsave_in_progress
0
标识RDB的bgsave 操作是否进行中。 0否,1是
rdb_last_save_time
1456376460
上次bgsave操作的时间戳
rdb_last_bgsave_status
ok
上次bgsave操作状态
rdb_last_bgsave_time_sec
3
上次bgsave操作使用的时间(单位是秒)
rdb_current_bgsave_time_sec
-1
如果bgsave操作正在进行,则记录当前 bgsave 操作使用的时间(单位是秒)
aof_enabled
1
是否开启了AOF功能。0否,1 是
aof_rewrite_in_progress
0
标识AOF的rewrite操作是否在进行中。 0 否,1是
aof_rewrite_scheduled
0
标识是否将要在RDB的bgsave 操作结束后执行 AOF rewrite 操作
aof_lastrewrite_time_sec
0
上次AOF rewrite 操作使用的时间(单位是秒)
aof_current_rewrite_time_sec
-1
如果rewrite操作正在进行,则记录当前AOF rewrite所使用的时间(单位是秒)
aof_last_bgrewrite_status
ok
上次AOF重写操作的状态
aof_last_write_status
ok
上次AOF写磁盘的结果
aof_current_size
186702421
AOF当前尺寸(单位是字节)
aof_base_size
134279710
AOF上次启动或 rewrite 的尺寸(单位是字节)
aof_buffer_length
0
AOF buffer 的大小
aof_rewrite_buffer_length
0
AOF rewrite buffer 的大小
aof_pending_bio_fsync
0
后台IO队列中等待 fsync任务的个数
aof_delayed_fsync
64
延迟的 fsync计数器
5.Stats
表 14-6是 info Stats 模块的统计信息,是 Redis的基础统计信息,包含了:连接、命令、网络、过期、同步等很多统计信息。
表 14-6 info Stats 模块统计信息
属性名
属性值
属性描述
total_connections_received
495967
连接过的客户端总数
total_commands_processed
5139857171
执行过的命令总数
instantaneous_ops_per_sec
511
每秒处理命令条数
total_net_input_bytes
282961395316
输入总网络流量(以字节为单位)
total_net_output_bytes
1760503612586
输出总网络流量(以字节为单位)
instantaneous_input_kbps
28.24
每秒输入字节数
instantaneous_output_kbps
234.90
每秒输出字节数
rejected_connections
0
拒绝的连接个数
sync_full
4
主从完全同步成功次数
sync_partial_ok
0
主从部分同步成功次数
sync_partial_err
0
主从部分同步失败次数
expired_keys
45534039
过期的 key 数量
evicted_keys
0
剔除(超过了maxmemory后)的key 数量
keyspace_hits
3923837939
命中次数
keyspace_misses
1078922155
不命中次数
pubsub_channels
0
当前使用中的频道数量
pubsub_patterns
0
当前使用中的模式数量
latest_fork_usec
16194
最近一次fork操作消耗的时间(微秒)
migrate_cached_sockets
0
记录当前Redis正在进行migrate 操作的目标 Redis个数。
例如RedisA分别向RedisB和C执行 migrate 操作,那么这个值就是2
6.Replication
表 14-7是 info Replication 模块的统计信息,包含了 Redis主从复制的一些统计信息,根据主从节点,统计信息也略有不同。
表 14-7 info Replication 模块统计信息
角色
属性名
属性值
属性描述
通用配置
role
master|slave
节点的角色
主节点
connected_slaves
1
连接的从节点个数
slaveO
slave0:ip=10.10.xx. 160,port=6382,state =online,offset=426978948465, lag=1
连接的从节点信息
master_repl_offset
426978955146
主节点偏移量
从节点
master_host
10.10.xx.63
主节点ip
master_port
6387
主节点端口
master_link_status
up
与主节点的连接状态
master_last_io_seconds_ago
0
主节点最后与从节点的通信时间间隔,单位为秒
master_sync_in__progress
0
从节点是否正在全量同步主节点RDB文件。
slave_repl_offset
426978956171
复制偏移量
slave_priority
100
从节点优先级
slave_read_only
1
从节点是否只读
connected_slaves
0
连接从节点个数
master_repl_offset
0
当前从节点作为其他节点的主节点时的复制偏移量
通用配置
repl_backlog_active
1
复制缓冲区状态
repl_back_log_size
10000000
复制缓冲区尺寸 (单位:字节)
repl_backlog_first_byte_o ffset
426968955147
复制缓冲区起始偏移量,标识当前缓冲区可用范围
repl_backlog_histlen
10000000
标识复制缓冲区已存有效数据长度
7.CPU
表 14-8是 info CPU模块的统计信息,包含了 Redis进程和子进程对于CPU消耗的一些统计信息。
表 14-8 info CPU模块统计信息
属性名
属性值
属性描述
used_cpu_sys
31957.30
Redis主进程在内核态所占用的CPU时钟总和
used_cpu_user
72484.27
Redis主进程在用户态所占用的CPU时钟总和
used_cpu_sys_children
121.49
Redis子进程在内核态所占用的CPU时钟总和
used_cpu_user_children
195.13
Redis子进程在用户态所占用的CPU时钟总和
8.Commandstat
表 14-9是 info Commands tats模块的统计信息,是 Redis命令统计信息,包含各个命令的命令名、总次数、总耗时、平均耗时。
表 14-9 info Commandstats模块统计信息
属性名
属性值
属性描述
cmdstat_get
calls=3738730699,usec= 11054972404,usec_per_call=2.96
get命令调用总次数、总耗时 、平均耗时(单位:微秒)
cmdstat_set
calls=50174458,usec=323143686,usec_per_call=6.44
set命令调用总次数、总耗时,平
均耗时(单位:微秒)
9.Cluster
表 14-10是 info Cluster模块的统计信息,目前只有一个统计信息,标识当前Redis是否为Cluster模式。
表 14-10 info Cluster模块统计信息
属性名
属性值
属性描述
cluster enabled
1
节点是否为cluster 模式。1 是,0否
10. Keyspace
表 14-11 是 info Keyspace模块的统计信息,包含了每个数据库的键值统计信息。
表 14-11 info Keyspace模块统计信息
属性名
属性值
属性描述
dbO
db0:keys= 106430,expires=56107,avg_ttl=60283952
当前数据库key总数,带有过期时间的key总数,平均存活时间
Sentinel节点是特殊的Redis节点,有几个特殊的配置,如表14-21所示。
表 14-21 Redis Sentinel节点配置说明
参数名
含义
默认值
可选值
可否支持sentinel set配置热生效
sentinel monitor
定义监控的主节点名、ip、port、主观下线票数
sentinel monitor my
master 127.0.0.1 6379 2
自定义 masterName
实际的 ip:port 票数
支持
sentinel down-after-millisecon ds
Sentinel 判定节点不可达的毫秒数
Sentinel down-aftermilliseconds mymaster 30 000
整数
支持
sentinel parallel-syncs
在执行故障转移时,最多有多少个从服务器同时对新的主服务器进行同步
sentinel parallel-syncs mymaster 1
大于0,不超过从服务器个数
支持
sentinel failover-timeout
故障迁移超时时间
sentinel failover-timeout mymaster 180 000
整数
支持
sentinel auth-pass
主节点密码
空
主节点密码
支持
sentinel notification-script
故障转移期间脚本
通知
空
脚本文件路径
支持
sentinel client-reconfig-script
故障转移成功后脚
本通知
空
脚本文件路径
支持
Cluster节点是特殊的Redis节点,有几个特殊的配置,如表14-22所示。
表 14-22 Redis Cluster配置说明
参数名
含义
默认值
可选值
可否支持config set配置热生效
cluster-node-timeout
集群节点超时时间(单位:毫秒)
15000
整数
可以
cluster-migration-barrier
主从节点切换需要的从节点数最小个数
1
整数
可以
cluster-slave-validity-factor
从节点有效性 判断因子,当从节点与主节点最后通信时间超过(cluster-node-timeout * slave-validity-factor) + repl-ping-slave-period 时,对应从节点不具备故障转移资格,防止断线时间过长的从节点进行故障转移。设置为0 表示从节点永不过期
10
整数
可以
cluster-require-full-coverage
集群是否需要所有的 slot 都分配
给在线节点,才能正常访问
yes
yes|no
可以
cluster-enabled
是否开启集群模式
yes
yes|no
不可以
cluster-config-file
集群配置文件名称
nodes.conf
nodes-{port}.conf
不可以
手机扫一扫
移动阅读更方便
你可能感兴趣的文章