记一次生产事故,Redis内存问题排查与解决

前几天生产的Redis突然挂掉了,之前都没有太注意过Redis那边的使用情况,这次Redis挂掉重启后,发现在那台服务器上,Redis占用了足足30G的运行内存,这才意识到Redis可能出现了一点问题,然后开始了错误排查过程。

错误排查

由于Redis是基于内存的数据库,所以当出现运行内存过大的情况,首先应该考虑检查Redis的数据占用情况。
使用Redis监控工具RedisInsight对内存使用情况进行检查
RedisInsight的基本使用方法见该博文:
Redis 管理工具 RedisInsight

在Memory Analyse模块,填入Redis的RDB文件目录,等待片刻后就能在Overview模块看到相关指标信息。

记一次生产事故,Redis内存问题排查与解决
记一次生产事故,Redis内存问题排查与解决

从图上可以看到内存在Database3的使用达到了28个G,同时由于Redis不支持针对hash的键进行过期设置,在业务逻辑中有定时任务会定期执行redis的数据清理。但是可见定期删除的任务并没有执行,导致了数据一直在往上增,导致了Redis的内存使用越来越大,最后挂掉。

问题解决

重新检查了一下定时任务,确定了是定时任务没有正常执行,修改了业务逻辑后,缓存正常清理,Redis内存使用恢复正常。
正常而言,Redis中的缓存都应该设置对应的过期时间及相应的淘汰策略,像这种问题属于比较低级的日常检查不到位了。

Original: https://www.cnblogs.com/winter0730/p/15404289.html
Author: cos晓风残月
Title: 记一次生产事故,Redis内存问题排查与解决

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/576254/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球