当前位置:首页 > 技术积累 > 正文内容

Redis内存占用率过高问题排查

竹林之风2年前 (2021-10-04)技术积累1754

        若使用了Redis的应用程序没有业务量或并发量的突然爆发,在常规情况下Redis内存占用率越来越高并有爆满的趋势,此时应立即排查原因。当感觉在处理完成之前Redis内存就会占满时,应果断采用增加内存等硬件升级方式先扩容后再排查。此类问题从Redis中目前有多少键、各键占用多大空间着手,从而判断是哪个应用程序哪段源程序在使用Redis方面有问题。

        快速回想哪些应用程序使用了Redis、源程序中使用Redis存储了哪些数据、各数据的过期时间多久等等,但通常临时很难想起诸多细节。若在开发应用程序时,增加了Redis调用的跟踪或统计日志,可以用这些日志作为参考,这些日志功能通常短时间无法开发完成。

        那么从Redis运行日志着手呢?恐怕也难以统计,所以先找找Redis的GUI管理工具,有内存占用分析功能的Redis GUI管理工具。四处搜索找到了Redis Insight这款软件WEB工具(当然可能还有其它满足需求的工具),它可以分析Redis内存占用情况,官网:https://redis.com/redis-enterprise/redis-insight/

        安装好后双击运行会自动打开浏览器,添加Redis连接信息并连接,然后依次点击Memory Analysis->Overview。Offline Analysis离线分析是通过rdb备份文件来分析(适用于无法直接连接生产环境Redis),Online Analysis在线分析是直接访问Redis服务器来分析,两种方式都可以。

QQ截图20211004215328.png

        分析完成后通过Overview菜单查看各数据类型键的内存占用量和数目、以及各有效期区间的键数量,通过该功能大致分析键是否过多、某些键是否占用过高内存、某些键是否有效期太长。然后点击菜单Memory Analyzor查看所有具体键,默认按内存占用率降序排列。

(1)若键过多,查看具体是哪些前缀的键过多,检查源程序是否可以删除不必要的键;

(2)若某些键过大,查看具体是哪些前缀的键过大,检查源程序是否可以压缩或是否未及时消费而堆积;

(3)若某些键有效期过久,查看具体是哪些前缀的键有效期过久检查源程序是否可以缩短有效期。

        倘若不用工具,那还可以直接使用redis-cli命令行工具或其它命令行工具,通过命令直接查询Redis的键数目、内存占用量、有效期等信息,例如redis-cli的KEYS命令等。


扫描二维码推送至手机访问。

版权声明:本文由久爱编程网发布,如需转载请注明出处。

本文链接:http://www.9icode.com/index.php/post/359.html

标签: Redis
分享给朋友:

相关文章

小试Git源码版本控制

小试Git源码版本控制

        我们一个人开发或维护一个项目的时候,一般项目源码放在自己的电脑上就可以了;当加入新成员和我们一起开发或维护的时候,如果还是按照这样的方式放置源码...

C#中问号“?”的用法

C#中问号“?”的用法

        在C#中问号有单问号和双问号两种场景,其中单问号就是用于条件表达式的一个三元运算符;双问号有两个用法:可空类型修饰符和空合并运算符。(1)条件表...

实现网页原路返回:从哪个页面跳转过来就返回哪个页面

实现网页原路返回:从哪个页面跳转过来就返回哪个页面

一、需求        导航对于PC网站或WAP网站有着相当重要的作用,它有利于提升用户体验,不至于让用户迷路。而“返回”就是导航的功能之一,主要体现在WAP网...

SVN源码版本控制目录方案

SVN源码版本控制目录方案

        SVN的目录规划:(1)trunk:主干目录,用于存放当前正在开发和维护中的源码版本,这是一个进行日常开发和维护的主要目录;(2)branche...

组建和运行技术开发团队的初期工作

组建和运行技术开发团队的初期工作

        每一个技术开发团队都是从无到有,在组建和运行的过程中需要做一些约定性的初期工作,在包容团队成员各自的个性下仍需要在制度、规范、流程、文档和工具等...

云平台多租户系统的设计方案

云平台多租户系统的设计方案

        多租户(Multi Tenancy)是指在一个云平台上,多个不同的客户共用相同的平台和架构但又相互独立并对各自的用户提供服务。多租户相同有4个特...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。