菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
378
0

Redis内存爆分析

原创
05/13 14:22
阅读数 60340

先总结下在不能获取dump文件的时候,直接用redis-audit

背景:

运维同学说resis要爆了,让看下

直接使用客户端

测试环境可以直接在客户端这样分析

 

 然而 正式环境不支持

手动统计

先找到数量最多的

 

计算内存统计

占了差不多2G

像这样逐个分析大Key比较费时,下面看下工具

redis-memory-analyzer rma

 https://github.com/gamenet/redis-memory-analyzer

这是一个python实现的分析工具,可以直接安装。

这里直接使用docker启动

 

 执行分析,然额,redis占用太多,直接rma被Killed

 

 试试看在本地运行源代码,尝试更改超时时间什么的:

克隆代码找到入口直接运行,看来是可用的,正在分析...

但是当你的数据量足够大,就需要好多时间,无望

 

 

 redis-sampler

 找到了另一个分析工具,是ruby写的

 

https://github.com/antirez/redis-sampler

同样直接docker运行ruby环境,发现需要装redis模块,使用gem install redis安装

 

 

 

 https://github.com/redis/redis-rb

 

这里我们的redis设置了验证,但是这个脚本默认无验证,这里要改下ruby脚本

如果您的Redis实例需要身份验证的话,它无法做到开箱即用(out-of-the-box)。您需要修改脚本以适应密码的需求。最简单形式是:redis = Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i) and change it to: redis = Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i, :password => "add-your-password-here")

 因为我们挂载了脚本,所以直接在宿主机改最下面的那个配置,加入我们的密码,用tail看下

下面直接开始分析

 这就是分析结果:这里只有各种类型的占比

redis-audit

https://github.com/snmaynard/redis-audit

这是另一个ruby写的分析脚本

同样docker运行,安装依赖,分析

 安装依赖,注意更新bundler

 调整传参

 分析汇总

这个就看的比较清楚

 

 

 参考:【推荐】六大免费的Redis内存分析工具

 

 

发表评论

0/200
378 点赞
0 评论
收藏
为你推荐 换一批