加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

redis info详解

发布时间:2020-12-16 04:39:12 所属栏目:安全 来源:网络整理
导读:redis版本为:4.0.9 # Server(服务器信息) redis_version :4.0.9? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#redis服务器版本 redis_git_sha1:00000000? ? ? ? ? ? ? ? ? #Git SHA1 redis_git_dirty:0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #Git dirty flag redis_build_id

redis版本为:4.0.9


# Server(服务器信息)

redis_version:4.0.9? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#redis服务器版本

redis_git_sha1:00000000? ? ? ? ? ? ? ? ? #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? #配置文件路径

executable:/var/lib/redis/redis-server


# 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:4065723376? ? ? ? ? ? ? ? ?#由redis分配器已分配的内存总量,以字节为单位

used_memory_human:3.79G? ? ? ?#以人类可读的格式返回redis已分配的内存总量

used_memory_rss:4674179072? ? ? ? ?#从操作系统的角度,返回redis已分配的内存总量(俗称常驻集大小)。这个值和top命令的输出一致

used_memory_rss_human:4.35G

used_memory_peak:4465559384? ? #redis的内存消耗最大值(以字节为单位) 。它的值由serverCron()函数定期更新,每次判断used_memory当前值是否大于used_memory_peak,如果大于就将它的值更新为used_memory值,代码见这里

used_memory_peak_human:4.16G #以人类可读的格式返回redis的内存消耗峰值

used_memory_lua:37888 ? ? ? ? ? ? ? ? ?#lua脚本引擎所使用的内存大小(以字节为单位)?,通过lua_gc()获取,代码见这里。

used_memory_lua_human:37.00K

used_memory_peak_perc:91.05%

used_memory_overhead:285412646

used_memory_startup:786448

used_memory_dataset:3780310730

used_memory_dataset_perc:93.00%

total_system_memory:135081304064????#?表示系统总内存大小,获取方式见total_system_memory_human:125.80G

maxmemory:0

maxmemory_human:0B

maxmemory_policy:noeviction

mem_fragmentation_ratio:1.15????#

存碎片率,它的值为 used_memory_rss/used_memory,计算方法见这里。如果此值接近1表示服务器内存碎片很少,大于1.5表示内存碎片率较大,举个例子解释:如果Redis进程malloc了1024K内存,操作系统如果为它分配了256个物理页(页面大小为4K),刚好为1024K,那说明内存分配非常紧凑,可是如果超过256太多,甚至达到了500,在计算RSS的时候,500*4K = 2000K,此时的mem_fragmentation_ratio = 2000/1024=2左右,说明内存碎片率较高。

mem_allocator:jemalloc-4.0.3?????#在编译时指定的redis所使用的内存分配器。可以是libc、jemalloc或者tcmalloc

active_defrag_running:0

lazyfree_pending_objects:0

# 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=6713173004,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,255);'># CPU(CPU计算量统计信息)

used_cpu_sys:3.52 ? ? ? ? ? ?#Redis服务器消耗的系统CPU

used_cpu_user:35.96? ? ? ? ? ?#Redis服务器使用的用户CPU

used_cpu_sys_children:1.82? ? ?#后台进程占用的系统CPU

used_cpu_user_children:31.28? #后台进程占用的用户CPU

什么是System CPU?什么是User CPU ??

CPU通常来说有三种状态:

Idle,空闲,什么也不做.

Running a user space program,运行在用户态,例如shell或者chrome浏览器等用户态程序。

Running the kernel,运行在内核态,管理中断或者资源,执行系统调用,例如用户态程序malloc内存,fork子进程等.

通过top命令可以查看到CPU的信息:

top?-?17:06:20?up??1:46,??6?users,??load?average:?0.12,?0.05,?0.01
Tasks:?290?total,???1?running,?289?sleeping,???0?stopped,???0?zombie
%Cpu(s):??0.8?us,??0.0?sy,??0.0?ni,?98.9?id,??0.2?wa,??0.0?hi,??0.0?si,??0.0?st
KiB?Mem:??13191533+total,?23158688?used,?10875664+free,????66336?buffers
KiB?Swap:?13409484+total,????????0?used,?13409484+free.??6119428?cached?Mem

PID?USER??????PR??NI????VIRT????RES????SHR?S??%CPU?%MEM?????TIME+?COMMAND???????????????????????????????????
3105?chenxin+??20???0???25072???3140???2528?R???0.3??0.0???0:00.03?top

关注的主要信息就是这三种us 用户态,sy 内核态,id 空闲,这三个值加起来接近100.?

其他字段信息解释见:http://blog.scoutapp.com/articles/2015/02/24/understanding-linuxs-cpu-stats

Redis INFO CPU 信息来源?

实际上是通过调用 getrusage 这个系统调用完成的。


?NAME
?????getrusage?--?get?information?about?resource?utilization
?????int?getrusage(int?who,?struct?rusage?*r_usage);
DESCRIPTION
?????getrusage()?returns?information?describing?the?resources?utilized?by?the?current?process,?or?all?its?terminated?child?processes.

可以统计一个进程占用的CPU信息,第二个参数是统计信息的结构体,将信息保存至结构体返回。

因此INFO CPU命令输出的信息表示的是:从Redis启动到此刻,CPU所分别花费在系统和用户态的时间累积,因此只要Redis进程不退出,这个数值是不断变大的,源码见这里

# 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的数,平均存活时间

---------------------?

参考:

Redis INFO 命令详解


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读