• 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

    不可以

     

    作者:小家电维修

    相见有时,后会无期。

  • 相关阅读:
    java微信开发
    LeetCode题目解答
    LeetCode 题目总结/分类
    http://baldtheme.com/theme/cleanizr/html/ 类似于这样的
    发现UC/OS-III源码有一处不明白!会不会是BUG.高手过来看看!
    hibernate hbm2ddl auto 不能创建表的问题
    Can jxta be used to develop online card game (p2p style)?
    父子对等组之间的关系
    WScript中调用js方法
    7-wonders-in-java
  • 原文地址:https://www.cnblogs.com/lizexiong/p/14733111.html
Copyright © 2020-2023  润新知