Redis 集群服务信息与性能指标详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Redis 集群服务信息与性能指标详解
在发现redis集群性能问题的时候,我们⾸首先需要考虑的是整个集群的各项指标数据,然后根据这些指标数据判断具体的问题所在,redis本来就提供了了⼀一套⽐比较完善的性能指标,具体如下:
⼀一般情况下, used_memory_rss 的值应该只⽐比 used_memory 稍微⾼高⼀一些。
1、当 rss > used ,且两者的值相差较⼤大时,表示存在(内部或外部的)内存碎⽚片。
内存碎⽚片的⽐比率可以通过查看
mem_fragmentation_ratio 得知。
2、当 used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了了,在这种情况下,操作可能会产⽣生明显的延迟。
3、当 Redis 释放内存时,分配器器可能会,也可能不不会,将内存返还给操作系统。
如果 Redis 释放了了内存,却没有将内存返还给操作系统,那么
used_memory 的值可能和操作系统显示的 Redis 内存占⽤用并不不⼀一致。
查看 used_memory_peak 的值可以验证这种情况是否发⽣生。
Redis Info信息包括:
Server,
Clients,
Memory,
Persistence,
Stats,
Replication,
CPU,
Commandstats,
Cluster,
Keyspace
# Server(服务器器信息)
redis_version:4.0.10 #redis服务器器版本
redis_git_sha1I00000000 #Git SHA1
redis_git_dirty:0 #Git dirty flag
redis_build_id:6c2c390b97607ff0 #redis build id
redis_mode:cluster #运⾏行行模式,单机或者集群
os:Linux 2.6.32-358.2.1.el6.x86_64 x86_64 #redis服务器器的宿主操作系统
arch_bits:64 #架构(32或64位)
multiplexing_api:epoll #redis所使⽤用的事件处理理机制
gcc_version:4.4.7 #编译redis时所使⽤用的gcc版本process_id:12099 #redis服务器器进程的pid
run_id:63bcd0e57adb695ff0bf873cf42d403ddbac1565 #redis服务器器的随机标识符(⽤用于sentinel和集群)
tcp_port:9021 #redis服务器器监听端⼝口
uptime_in_seconds:26157730 #redis服务器器启动总时间,单位是秒uptime_in_days:302 #redis服务器器启动总时间,单位是天hz:10 #redis内部调度(进⾏行行关闭timeout的客户端,删除过期key等等)频率,程序规定serverCron每秒运⾏行行10次。
lru_clock:14359959 #⾃自增的时钟,⽤用于LRU管理理,该时钟
100ms(hz=10,因此每1000ms/10=100ms执⾏行行⼀一次定时任务)更更新⼀一次。
config_file:/redis_cluster/etc/9021.conf #配置⽂文件路路径
# Clients(已连接客户端信息)
connected_clients:1081 #已连接客户端的数量量(不不包括通过slave连接的客户端)
client_longest_output_list:0 #当前连接的客户端当中,最⻓长的输出列列表,⽤用client list命令观察omem字段最⼤大值
client_biggest_input_buf:0 #当前连接的客户端当中,最⼤大输⼊入缓存,⽤用client list命令观察qbuf和qbuf-free两个字段最⼤大值
blocked_clients:0 #正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量量
# Memory(内存信息)
used_memory:327494024 #由redis分配器器分配的内存总
量量,以字节为单位
used_memory_human:312.32M #以⼈人类可读的格式返回redis分配的内存总量量
used_memory_rss:587247616 #从操作系统的⻆角度,返回redis已分配的内存总量量(俗称常驻集⼤大⼩小)。
这个值和top命令的输出⼀一致used_memory_peak:1866541112 #redis的内存消耗峰值(以字节为单位)
used_memory_peak_human:1.74G #以⼈人类可读的格式返回redis的内存消耗峰值
used_memory_lua:35840 #lua引擎所使⽤用的内存⼤大⼩小(以字节为单位)
mem_fragmentation_ratio:1.79 #used_memory_rss和
used_memory之间的⽐比率,⼩小于1表示使⽤用了了swap,⼤大于1表示碎⽚片⽐比较多
mem_allocator:jemalloc-3.6.0 #在编译时指定的redis所使⽤用的内存分配器器。
可以是libc、jemalloc或者tcmalloc
# Persistence(rdb和aof的持久化相关信息)
loading:0 #服务器器是否正在载⼊入持久化⽂文件
rdb_changes_since_last_save:28900855 #离最近⼀一次成功⽣生成rdb⽂文件,写⼊入命令的个数,即有多少个写⼊入命令没有持久化
rdb_bgsave_in_progress:0 #服务器器是否正在创建rdb⽂文件rdb_last_save_time:1482358115 #离最近⼀一次成功创建rdb⽂文件的时间戳。
当前时间戳 - rdb_last_save_time=多少秒未成功⽣生成rdb⽂文件rdb_last_bgsave_status:ok #最近⼀一次rdb持久化是否成功rdb_last_bgsave_time_sec:2 #最近⼀一次成功⽣生成rdb⽂文件耗时秒数
rdb_current_bgsave_time_sec:-1 #如果服务器器正在创建rdb⽂文件,那么这个域记录的就是当前的创建操作已经耗费的秒数
aof_enabled:1 #是否开启了了aof
aof_rewrite_in_progress:0 #标识aof的rewrite操作是否在进⾏行行中
aof_rewrite_scheduled:0
#rewrite任务计划,当客户端发送bgrewriteaof指令,如果当前rewrite⼦子进程正在执⾏行行,那么将客户端请求的bgrewriteaof变为计划任务,待aof⼦子进程结束后执⾏行行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_current_size:4201740 #aof当前尺⼨寸
aof_base_size:4201687 #服务器器启动时或者aof重写最近⼀一次执⾏行行之后aof⽂文件的⼤大⼩小
aof_pending_rewrite:0 #是否有aof重写操作在等待rdb⽂文件创建完毕之后执⾏行行?
aof_buffer_length:0 #aof buffer的⼤大⼩小
aof_rewrite_buffer_length:0 #aof rewrite buffer的⼤大⼩小
aof_pending_bio_fsync:0 #后台I/O队列列⾥里里⾯面,等待执⾏行行的fsync调⽤用数量量
aof_delayed_fsync:0 #被延迟的fsync调⽤用数量量
# Stats(⼀一般统计信息)
total_connections_received:209561105 #新创建连接个数,如果新创建连接过多,过度地创建和销毁连接对性能有影响,说明短连接严重或连接池使⽤用有问题,需调研代码的连接设置
total_commands_processed:2220123478 #redis处理理的命令数instantaneous_ops_per_sec:279 #redis当前的qps,redis内部较实时的每秒执⾏行行的命令数
total_net_input_bytes:118515678789 #redis⽹网络⼊入⼝口流量量字节数total_net_output_bytes:236361651271 #redis⽹网络出⼝口流量量字节数instantaneous_input_kbps:13.56 #redis⽹网络⼊入⼝口kps instantaneous_output_kbps:31.33 #redis⽹网络出⼝口kps rejected_connections:0 #拒绝的连接个数,redis 连接个数达到maxclients限制,拒绝新连接的个数
sync_full:1 #主从完全同步成功次数sync_partial_ok:0 #主从部分同步成功次数sync_partial_err:0 #主从部分同步失败次数expired_keys:15598177 #运⾏行行以来过期的key的数量量evicted_keys:0 #运⾏行行以来剔除(超过了了maxmemory后)的key的数量量
keyspace_hits:1122202228 #命中次数
keyspace_misses:577781396 #没命中次数
pubsub_channels:0 #当前使⽤用中的频道数量量pubsub_patterns:0 #当前使⽤用的模式的数量量
latest_fork_usec:15679 #最近⼀一次fork操作阻塞redis进程的耗时数,单位微秒
migrate_cached_sockets:0 #
# Replication(主从信息,master上显示的信息)
role:master #实例例的⻆角⾊色,是master or slave connected_slaves:1 #连接的slave实例例个数
slave0:ip=192.168.64.104,port=9021,state=online,offset=671317300 4,lag=0 #lag从库多少秒未向主库发送REPLCONF命令
master_repl_offset:6713173145 #主从同步偏移量量,此值如果和上⾯面的offset相同说明主从⼀一致没延迟
repl_backlog_active:1 #复制积压缓冲区是否开启
repl_backlog_size:134217728 #复制积压缓冲⼤大⼩小
repl_backlog_first_byte_offset:6578955418 #复制缓冲区⾥里里偏移量量的⼤大⼩小
repl_backlog_histlen:134217728 #此值等于 master_repl_offset - repl_backlog_first_byte_offset,该值不不会超过repl_backlog_size的⼤大⼩小
# Replication(主从信息,slave上显示的信息)
role:slave #实例例的⻆角⾊色,是master or slave master_host:192.168.64.102 #此节点对应的master的ip
master_port:9021 #此节点对应的master的port master_link_status:up #slave端可查看它与master之间同步状态,当复制断开后表示down
master_last_io_seconds_ago:0 #主库多少秒未发送数据到从库? master_sync_in_progress:0 #从服务器器是否在与主服务器器进⾏行行同步slave_repl_offset:6713173818 #slave复制偏移量量
slave_priority:100 #slave优先级
slave_read_only:1 #从库是否设置只读
connected_slaves:0 #连接的slave实例例个数
master_repl_offset:0
repl_backlog_active:0 #复制积压缓冲区是否开启
repl_backlog_size:134217728 #复制积压缓冲⼤大⼩小
repl_backlog_first_byte_offset:0 #复制缓冲区⾥里里偏移量量的⼤大⼩小
repl_backlog_histlen:0 #此值等于 master_repl_offset -
repl_backlog_first_byte_offset,该值不不会超过repl_backlog_size的⼤大⼩小
# CPU(CPU计算量量统计信息)
used_cpu_sys:96894.66 #将所有redis主进程在核⼼心态所占⽤用的CPU时求和累计起来
used_cpu_user:87397.39 #将所有redis主进程在⽤用户态所占⽤用的CPU时求和累计起来
used_cpu_sys_children:6.37 #将后台进程在核⼼心态所占⽤用的CPU时求和累计起来
used_cpu_user_children:52.83 #将后台进程在⽤用户态所占⽤用的CPU时求和累计起来
# Commandstats(各种不不同类型的命令的执⾏行行统计信息)
cmdstat_get:calls=1664657469,usec=8266063320,usec_per_call=4.
97
#call每个命令执⾏行行次数,usec总共消耗的CPU时⻓长(单位微秒),平均每次消耗的CPU时⻓长(单位微秒)
# Cluster(集群相关信息)
cluster_enabled:1 #实例例是否启⽤用集群模式
# Keyspace(数据库相关的统计信息)
db0:keys=194690,expires=191702,avg_ttl=3607772262 #db0的key
的数量量,以及带有⽣生存期的key的数,平均存活时间。