Redis运行时的10大重要指标

Redis运行时的10大重要指标

 

 

存活状况redis

 

全部指标中最重要的固然是检查redis是否还活着,能够经过命令PING的响应是不是PONG来判断。缓存

 

链接数安全

 

链接的客户端数量,可经过命令src/redis-cli info Clients | grep connected_clients获得,这个值跟使用redis的服务的链接池配置关系比较大,因此在监控这个字段的值时须要注意。另外这个值也不能太大,建议不要超过5000,若是太大多是redis处理太慢,那么须要排除问题找出缘由。服务器

另外还有一个拒绝链接数(rejected_connections)也须要关注,这个值理想状态是0。若是大于0,说明建立的链接数超过了maxclients,须要排查缘由。是redis链接池配置不合理仍是链接这个redis实例的服务过多等。网络

 

阻塞客户端数量运维

 

blocked_clients,通常是执行了list数据类型的BLPOP或者BRPOP命令引发的,可经过命令src/redis-cli info Clients | grep blocked_clients获得,很明显,这个值最好应该为0。性能

 

使用内存峰值优化

 

监控redis使用内存的峰值,咱们都知道Redis能够经过命令config set maxmemory 10737418240设置容许使用的最大内存(强烈建议不要超过20G),为了防止发生swap致使Redis性能骤降,甚至因为使用内存超标致使被系统kill,建议used_memory_peak的值与maxmemory的值有个安全区间,例如1G,那么used_memory_peak的值不能超过9663676416(9G)。spa

 

另外,咱们还能够监控maxmemory不能少于多少G,好比5G。由于咱们之前生产环境出过这样的问题,运维不当心把10G配置成了1G,从而致使服务器有足够内存却不能使用的悲剧。日志

 

内存碎片率

 

mem_fragmentation_ratio=used_memory_rss/used_memory,这也是一个很是须要关心的指标。若是是redis4.0以前的版本,这个问题除了重启也没什么很好的优化办法。而redis4.0有一个主要特性就是优化内存碎片率问题(Memory de-fragmentation)。在redis.conf配置文件中有介绍即ACTIVE DEFRAGMENTATION:碎片整理容许Redis压缩内存空间,从而回收内存。

 

这个特性默认是关闭的,能够经过命令CONFIG SET activedefrag yes热启动这个特性。

  1. 当这个值大于1时,表示分配的内存超过实际使用的内存,数值越大,碎片率越严重。

  2. 当这个值小于1时,表示发生了swap,便可用内存不够。

 

另外须要注意的是,当内存使用量(used_memory)很小的时候,这个值参考价值不大。因此,建议used_memory至少1G以上才考虑对内存碎片率进行监控。

 

缓存命中率

 

keyspace_misses/keyspace_hits这两个指标用来统计缓存的命令率,keyspace_misses指未命中次数,keyspace_hits表示命中次数。keyspace_hits/(keyspace_hits+keyspace_misses)就是缓存命中率。视状况而定,建议0.9以上,即缓存命中率要超过90%。若是缓存命中率太低,那么要排查对缓存的用法是否有问题!

 

OPS

 

instantaneous_ops_per_sec这个指标表示缓存的OPS,若是业务比较平稳,那么这个值也不会波动很大,不过国内的业务比较特性,若是不是全球化的产品,夜间是基本上没有什么访问量的,因此这个字段的监控要结合本身的具体业务,不一样时间段波动范围可能有所不一样。

 

持久化

 

rdb_last_bgsave_status/aof_last_bgrewrite_status,即最近一次或者说最后一次RDB/AOF持久化是否有问题,这两个值都应该是"ok"。

另外,因为redis持久化时会fork子进程,且fork是一个彻底阻塞的过程,因此能够监控fork耗时即latest_fork_usec,单位是微妙,若是这个值比较大会影响业务,甚至出现timeout。

 

失效KEY

 

若是把Redis当缓存使用,那么建议全部的key都设置了expire属性,经过命令src/redis-cli info Keyspace获得每一个db中key的数量和设置了expire属性的key的属性,且expires须要等于keys:

# Keyspace
db0:keys=30,expires=30,avg_ttl=0
db0:keys=23,expires=22,avg_ttl=0

 

慢日志

经过命令slowlog get获得Redis执行的slowlog集合,理想状况下,slowlog集合应该为空,即没有任何慢日志,不过,有时候因为网络波动等缘由形成set key value这种命令执行也须要几毫秒,在监控的时候咱们须要注意,而不能看到slowlog就想着去优化,简单的set/get可能也会出如今slowlog中。

相关文章
相关标签/搜索