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

竹林之风3周前 (10-04)技术积累53

        若使用了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命令等。

标签: Redis
返回列表

上一篇:实现内网穿透的几种方式

没有最新的文章了...

相关文章

在线支付子模块的设计与实现

        一个在线交易系统需要各种支付方式方便客户付款,这些支付方式按场景可分为在线支付和线下现付。线下现付常见的...

ASP.NET实现HTTP长轮询(二)——一般处理程序ashx

        本文主要描述如何在ASP.NET一般处理程序中实现长轮询:(1)实现IAsyncResult:using System; using...

ASP.NET实现HTTP长轮询(一)——WebForm

        本文主要描述如何在ASP.NET WebForm中实现长轮询:(1)在ASP.NET WebForm的aspx文件中设置如下指令即可实现异步的A...

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

        多租户(Multi Tenancy)是指在一个云平台上,多个不同的客户共用相同的平台和架构但又相互独立并...

实现内网穿透的几种方式

        大部分普通电脑对外都没有固定的公网IP、或处于NAT网络内,要从局域网外直接访问该电脑,需要借助第三方工具。一、有一台公网固...

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

        每一个技术开发团队都是从无到有,在组建和运行的过程中需要做一些约定性的初期工作,在包容团队成员各自的个性...

发表评论    

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