前几天生产的Redis突然挂掉了,之前都没有太注意过Redis那边的使用情况,这次Redis挂掉重启后,发现在那台服务器上,Redis占用了足足30G的运行内存,这才意识到Redis可能出现了一点问题,然后开始了错误排查过程。
错误排查
由于Redis是基于内存的数据库,所以当出现运行内存过大的情况,首先应该考虑检查Redis的数据占用情况。
使用Redis监控工具RedisInsight对内存使用情况进行检查
RedisInsight的基本使用方法见该博文:
Redis 管理工具 RedisInsight
在Memory Analyse模块,填入Redis的RDB文件目录,等待片刻后就能在Overview模块看到相关指标信息。


从图上可以看到内存在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/
转载文章受原作者版权保护。转载请注明原作者出处!