当前位置: 首页 > article >正文

Redis运行时的10大重要指标

Redis运行时的10大重要指标

  • 存活情况
  • 连接数
  • 阻塞客户端数量
  • 使用内存峰值
  • 内存碎片率
  • 缓存命中率
  • OPS
  • 持久化
  • 慢日志

存活情况

使用ping命令查看

连接数

连接的客户端数量,可通过命令

src/redis-cli info Clients | grep connected_clients

得到,这个值跟使用redis的服务的连接池配置关系比较大,所以在监控这个字段的值时需要注意。另外这个值也不能太大,建议不要超过5000,如果太大可能是redis处理太慢,那么需要排除问题找出原因。
在这里插入图片描述
另外还有一个拒绝连接数

rejected_connections(redis-cli info | grep rejected_connections)

也需要关注,这个值理想状态是0。如果大于0,说明创建的连接数超过了maxclients,需要排查原因。是redis连接池配置不合理还是连接这个redis实例的服务过多等。
在这里插入图片描述

阻塞客户端数量

blocked_clients,一般是执行了list数据类型的BLPOP或者BRPOP命令引起的,可通过命令

src/redis-cli info Clients | grep blocked_clients

得到,很明显,这个值最好应该为0。
在这里插入图片描述

使用内存峰值

监控redis使用内存的峰值,我们都知道Redis可以通过命令

redis-cli 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,这也是一个非常需要关心的指标

redis-cli info | grep mem_fragmentation_ratio

如果是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%。如果缓存命中率过低,那么要排查对缓存的用法是否有问题!

redis-cli info | grep keyspace_misses

redis-cli info | grep keyspace_hits

本地的空库,啥都没有,哈哈哈哈

OPS

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

redis-cli info | grep instantaneous_ops_per_sec

在这里插入图片描述

持久化

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

另外,由于redis持久化时会fork子进程,且fork是一个完全阻塞的过程,所以可以监控fork耗时即latest_fork_usec,单位是微妙,如果这个值比较大会影响业务,甚至出现timeout。

redis-cli info | grep rdb_last_bgsave_status
redis-cli info | grep aof_last_bgrewrite_status

在这里插入图片描述

慢日志

通过命令redis-cli slowlog get得到Redis执行的slowlog集合,理想情况下,slowlog集合应该为空,即没有任何慢日志,不过,有时候由于网络波动等原因造成set key value这种命令执行也需要几毫秒,在监控的时候我们需要注意,而不能看到slowlog就想着去优化,简单的set/get可能也会出现在slowlog中。
在这里插入图片描述


http://www.kler.cn/a/388744.html

相关文章:

  • MySql结合element-plus pagination的分页查询
  • 24/11/13 算法笔记<强化学习> DQN算法
  • STM32单片机WIFI语音识别智能衣柜除湿消毒照明
  • 【真题笔记】21年系统架构设计师案例理论点总结
  • 人脸识别技术:从算法到深度学习的全面解析
  • Debezium日常分享系列之:异步 Debezium 嵌入式引擎
  • 1688拿货经验分享:亚马逊中小卖家如何选合作厂家
  • JS面试题之---解释一下什么是闭包?
  • 【日常经验】RPC 调用的分类及示例
  • 非关系型数据库NoSQL的类型与优缺点对比
  • API接口精准获取商品详情信息案例
  • 【前端】Svelte:响应性声明
  • 动态规划(二)——路径问题
  • Android13 系统/用户证书安装相关分析总结(三) 增加安装系统证书的接口遇到的问题和坑
  • VScode配置C、C++环境,编译并运行并调试
  • Java之List常见用法
  • VUE3实现好看的通用网站源码模板
  • 深度学习经典模型之VGGNet
  • <<零基础C++第一期,C++入门基础之引用知识点>>
  • JavaWeb--Maven
  • 系统安全第五次作业题目及答案
  • Could not create task ‘:shared_preferences_android:generateDebugUnitTestConfig‘
  • 大数据机器学习算法和计算机视觉应用01:博弈论基础
  • SpringBoot整合Sharding-JDBC实现读写分离
  • 界面控件Telerik UI for ASP.NET AJAX 2024 Q3亮点 - 新增金字塔图表类型
  • 大数据新视界 -- 大数据大厂之经典案例解析:广告公司 Impala 优化的成功之道(下)(10/30)