Redis配置统计字典

  本章将对Redis的系统状态信息(info命令结果)和Redis的所有配置(包括Standalone、Sentinel、Cluster三种模式)做一个全面的梳理,希望本章能够成为Redis配置统计字典,协助大家分析和解决日常开发和运维中遇到的问题,主要内容如下:

□ info系统状态说明。

□ Sentinel配置说明。

□ Cluster配置说明。

 

1.info系统状态说明

1.1 命令说明

  info命令的使用方法有以下三种 :

□ info: 部分Redis系统状态统计信息。

□ info all: 全部Redis系统状态统计信息。

□ info section: 某一块的系统状态统计信息,其中 section可以忽略大小写。

  例如,只对Redis的内存相关统计比较感兴趣,可以执行info memory,此时section =memory, 下面是info memory的结果:

127.0.0.1:6379> info memory
# 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
# 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 数据库键统计信息

 

1.2 详细说明

下面将对每个模块进行详细说明,为了更加方便解释,我们直接结合线上一个运行的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 640b8895a5084d669ed151f 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_offset 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总数,平均存活时间

 

2.Sentinel配置说明和分析

  Sentinel节点是特殊的Redis节点,有几个特殊的配置,如表14-21所示。

表 14-21  Redis Sentinel节点配置说明
参数名 含义 默认值 可选值

可否支持sentinel

set配置热生效

sentinel monitor 

<master-name> <ip> <port> <quorum>

定义监控的主节点名、ip、port、主观下线票数

sentinel monitor my master 127.0.0.1 6379 2

自定义 masterName

实际的 ip:port 票数

支持

<quorum>

sentinel down-after-millisecon ds

<master-name> <times>

Sentinel 判定节点不可达的毫秒数 Sentinel down-after­milliseconds mymaster 30 000 整数 支持

sentinel parallel-syncs

<master-name> <nums>

在执行故障转移时,最多有多少个从服务器同时对

新的主服务器进行同步

sentinel parallel-syncs mymaster 1 大于0,不超过从服务器个数 支持

sentinel failover-timeout

<master-name> <times>

故障迁移超时时间 sentinel failover-timeout mymaster 180 000 整数 支持

sentinel auth-pass

<master-name><password>

主节点密码 主节点密码 支持

sentinel notifi­cation-script

<master-name> <script-path>

故障转移期间脚本通知

脚本文件路径 支持

sentinel client-reconfig-script

<master-name> <script-path>

故障转移成功后脚本通知

脚本文件路径 支持

 

3.Cluster配置说明和分析

  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

不可以

 

posted @ 2021-05-05 22:35  小家电维修  阅读(101)  评论(0编辑  收藏  举报