2019独角兽企业重金招聘Python工程师标准>>>

Redis运行时的10大重要指标

存活情况

所有指标中最重要的当然是检查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)。

另外,我们还可以监控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中。

转载于:https://my.oschina.net/demons99/blog/3006229

Redis运行时的10大重要指标相关推荐

  1. 一次jdk1.7升级jdk1.8后导致redis运行时blocked_clients过多问题解决

    一次jdk1.7升级jdk1.8后导致redis运行时blocked_clients过多问题解决 参考文章: (1)一次jdk1.7升级jdk1.8后导致redis运行时blocked_clients ...

  2. UNITY2018.3 在editor下运行时new memoryprofiler显示 shader占用内存很大的问题在安卓上并没有看到...

    UNITY2018.3 在editor下运行时new memoryprofiler显示 shader占用内存很大的问题在安卓上并没有看到 在安卓机上完全看不到shader占用的内存,但问题是,shad ...

  3. 【T+】畅捷通T+在运行时sqlserver占用内存过大,导致电脑卡顿。

    [问题现象] 畅捷通T+软件在运行时 Sql server 占用内存过大, 导致电脑卡顿. [解决方案] 在数据库中修改服务器内存大小来控制占用内存. 1.打开 Microsoft SQL Serve ...

  4. 乘风破浪,.Net Core遇见Dapr,为云原生而生的分布式应用运行时

    Dapr是一个由微软主导的云原生开源项目,国内云计算巨头阿里云也积极参与其中,2019年10月首次发布,到今年2月正式发布V1.0版本.在不到一年半的时间内,github star数达到了1.2万,超 ...

  5. redis的热key、大key

    目录 1.概述 2.查找方法 2.1.知道具体哪个key有问题 2.2.不知道具体哪个key有问题 3.处理方法 3.1.大key的处理方法 3.2.热key的处理方法 1.概述 大key: 含有较大 ...

  6. Dapr 知多少 | 分布式应用运行时

    Intro Dapr 官方团队已于最近(2021.1.17)正式发布Dapr v1.0,Dapr已正式生产可用,可以部署到自托管环境或 Kubernetes 集群.对于绝大多数开发者来说,想必对Dap ...

  7. ASP.NET HTTP 运行时

    ASP.NET HTTP 运行时 一个请求从 URL 字符串到 HTML 代码的"漫长曲折"之路 Dino Esposito Wintellect 2003年7月10日 摘要:本文 ...

  8. python 3.0 print_Python 3.x 新特性及10大变化

    python 3.x 起始版本是Python 3.0,目前的最新版本是 3.3.3 Python之父Guido van Rossum谈到了Python 3.0的构思: 一直以来,除非要打破向后兼容性, ...

  9. WebAssembly + Dapr = 下一代云原生运行时?

    作者 | 易立 来源 | 阿里巴巴云原生公众号 云计算已经成为了支撑数字经济发展的关键基础设施.云计算基础设施也在持续进化,从 IaaS,到容器即服务(CaaS),再到 Serverless 容器和函 ...

最新文章

  1. 自动禁止ssh的root登陆
  2. 直接操作游戏对象C#游戏开发
  3. 自相关矩阵和互相关矩阵的matlab实现
  4. 医院病案档案管理系统php_医疗产品经理必懂:医院业务流程及系统
  5. echarts formatter_vue使用echarts的方法
  6. 创建一个带副本机制的topic
  7. 一种非常实用的系统掉电检测和保护电路---摘自:周立功单片机
  8. 如何检查CentOS服务器受到DDOS攻击
  9. 南通大学教务管理微信体验
  10. ExcelVB脚本小记(1)
  11. Linux 命令(127)—— wget 命令
  12. 3 EDA技术实用教程 【基础知识1】
  13. 介绍一个产品的思维导图_思维导图介绍(1)
  14. Redfish协议测试工具–Postman
  15. TCL通讯宣布于9月30日港股收盘后从港交所退市
  16. python翻页爬取豆瓣影评_Python3爬取豆瓣电影
  17. 高数篇:06零点问题与微分不等式
  18. 腾讯服务器解封微信号6,微信号封了怎么解封?微信号如何解封方法终于来了...
  19. Pytorch的grad、backward()、zero_grad()
  20. Dell B1260dn Printer驱动的安装

热门文章

  1. C#实现二维码功能,winform 以及 asp.net均可以用
  2. TCPClient、TCPListener的用法
  3. [bzoj3450]Tyvj1952 Easy[概率dp]
  4. Spring AOP代理时 ClassCastException: $Proxy0 cannot be cast to (类型转换错误)
  5. (转载)C语言右移运算符的问题(特别当与取反运算符一起时)
  6. 【翻译】五步快速使用LINQPad尝鲜StreamInsight
  7. 为什么是 OnDraw(CDC* /*pDC*/) 而不是 OnDraw(CDC* pDC)
  8. 在Intranet环境中保护.NETWeb应用程序方案(转)
  9. tomcat源码分析(一)- tomcat源码导入IDEA并正常启动
  10. IntelliJ IDEA 2018.2.2及以下版本破解方法