redis集群维护及故障案例

Posted on 2020-10-10 10:55  四月春雨  阅读(416)  评论(0编辑  收藏  举报

1.分析键值大小

身为一名运维工程师我们应该时刻关注服务器的运行情况,为了让缓存服务器可以长久的稳定运行下去,就要保证拥有足够用的内存来支持更大更持久的缓存。因此定期分析键值很有必要,将那些用不到且较大的键值清除掉。具体方法如下:

安装工具

yum install python-pip gcc python-devel -y

git clone https://github.com/scripathikrishnan/redis-rdb-tools

cd redis-rdb-tools

python setup.py install

生成.csv纯文本形式存储表格数据利于后期分析键值大小

rdb -c memory redis_6390.rdb -f redis_6380.rdb.csv

利用awk将csv文本的有用数据导入到txt文本形式中

awk -F"," {print$4,$2,$3,$1}' redis_6380.rdb.csv | sort |uniq>192.168.108.52:6380.txt

2.监控过期键

如果一个键已经设置了过期时间,在这个时候在set这个键,过期时间就会取消。

为了防止出现类似事故需要监控键过期时间。可以利用scan命令范围查询键名,然后循环读取tt1时间,scan命令是以非阻塞的方式实现key值得查找的,因此性能比keys命令好。

可以用下面这个脚本进行监控

 

 3.内存满了怎么办?

一般情况都会提前设定限制使用内存大小,一般设置系统内存的一半给系统预留内存空间。

在redis.conf配置文件中设置限制内存大小

 

 

 

 动态调整内存

如果真遇到内存满了无法处理数据了可以利用config get  maxmemory +内存大小 来动态调整限制内存。config get maxmemory  0 表示设置不限制内存。

注意:动态内存调整只能调整的比实际占用的大,不能调整的比实际占用的小。

日常还可以通过脚本或者zabbix来监控内存使用情况。大概思路就是通过登录到集群节点中用info命令查看内存使用大小,用awk命令获取当前内存使用大小,然后用脚本来监控这个值或者zabbix自定义参数监控这个值,当这个值大于某一上线就会进行报警。

 

Copyright © 2024 四月春雨
Powered by .NET 8.0 on Kubernetes