首页

通过观察实际监控图例预警数据情况优化Redis集群Cluster配置及方案调整案例

标签:redis,性能,调优,优化,预警     发布时间:2017-09-19   

一、问题描述

根据实际生产运维监控数据,观察Redis服务器的内存占用超过70%以上,直接发出预警信息,详细情况如下图所示

通过观察实际监控图例预警数据情况优化Redis集群Cluster配置及方案调整案例

top相关进程信息如下

通过观察实际监控图例预警数据情况优化Redis集群Cluster配置及方案调整案例

二、解决分析

1.基本定位问题,由于redis的rdb持久化引起,观察rdb-bgsave进程,每分钟一次,那为什么会如此频繁的进行rdb持久化呢?

通过观察实际监控图例预警数据情况优化Redis集群Cluster配置及方案调整案例

2.查看集群更新数据量

通过观察实际监控图例预警数据情况优化Redis集群Cluster配置及方案调整案例

3.单台机器每分钟有15万以上的更新量,3台master那就有50W的更新量,根据数据更新场景判断没有这么大更新量

(而redis默认配置rdb持久化触发条件:1分钟内超过1万次数据更新、5分钟超过10条数据更新、15分钟超过1条数据更新,相关文章参考“关于Redis的RDB及AOF两种不同存储方式及redis.conf相关配置说明”)

4.拷贝下dump文件(两个,间隔一分钟拷一下,这样可以做key对比),使用rdb-tools,分析内存key,命令如下

rdb -c memor \dump\dump1.rdb > \dump\memory1.csv@b@rdb -c memor \dump\dump2.rdb > \dump\memory2.csv

5.打开文件,发现大量E:开头的string,和开发沟通,有个场景会定时导一个2G大小的数据文件到redis,不论有没有改动,都会导进去,造成redis更改频繁,引起rdb频繁持久化

通过观察实际监控图例预警数据情况优化Redis集群Cluster配置及方案调整案例

6.具体解决方案:a.关闭或调大持久化、b.业务系统调整,只导有变化的数据。