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

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

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

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

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

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

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

标签: Redis
分享给朋友:

“Redis内存占用率过高问题排查” 的相关文章

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

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

        一个在线交易系统需要各种支付方式方便客户付款,这些支付方式按场景可分为在线支付和线下现付。线下现付常见的有货到付款、邮局汇款、银行电汇等非实时方...

Android开发从新手开始(一)——概述

Android开发从新手开始(一)——概述

前言        做为一个程序员,不应该将自己限定在自己熟悉的平台和语言上,而也应该多去了解一下其它平台和语言。这样可以吸取各个平台和语言的思想,提升自己解决...

ASP.NET中报“无法在已发送HTTP标头之后设置状态”异常问题解决

ASP.NET中报“无法在已发送HTTP标头之后设置状态”异常问题解决

        ASP.NET中报“无法在已发送HTTP标头之后设置状态”异常,是因为设置Response的StatusCode之前,程序已设置响应标头。可从以...

ASP.NET网站自定义错误处理及其它安全相关

ASP.NET网站自定义错误处理及其它安全相关

        ASP.NET网站在运行过程中总是有可能报错,例如404等HTTP错误、500等程序异常。在IIS托管并报错的情况下,网站的默认行为依次是:(1).NET运行时接收并处理的部分显示.N...

从被扫描记录看网站安全应该注意的一些细节

从被扫描记录看网站安全应该注意的一些细节

1、尽可能地隐藏服务器真实IP,减少攻击目标。例如使用负载均衡、网关等作为门户,由负载均衡或网关转发到后端服务器。2、服务器必须开放的服务(除HTTP、HTTPS等为公众开放的服务外),尽可能改为其它较大的不常用的端口号,这样攻击者需要扫描...

ASP.NET Core网站报“An assembly specified in the application dependencies manifest was not found”异常解决

ASP.NET Core网站报“An assembly specified in the application dependencies manifest was not found”异常解决

        ASP.NET Core网站报“An assembly specified in the application dependencies ma...

发表评论

访客

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