温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Redis重要的健康指标有哪些

发布时间:2021-11-06 16:30:12 来源:亿速云 阅读:146 作者:iii 栏目:web开发

这篇文章主要讲解了“Redis重要的健康指标有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis重要的健康指标有哪些”吧!

存活情况

所有指标中最重要的当然是检查redis是否还活着,可以通过命令PING的响应是否是PONG来判断。

连接数

连接的客户端数量,可通过命令src/redis-cli info Clients | grep  connected_clients得到,这个值跟使用redis的服务的连接池配置关系比较大,所以在监控这个字段的值时需要注意。另外这个值也不能太大,建议不要超过5000,如果太大可能是redis处理太慢,那么需要排除问题找出原因。

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)。另外,我们还可以监控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时,表示发生了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中。

感谢各位的阅读,以上就是“Redis重要的健康指标有哪些”的内容了,经过本文的学习后,相信大家对Redis重要的健康指标有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI