redis info详解
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 命令详解 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |