记一次Redis溢出故障处理
记一次Redis溢出故障处理
问题起因
某天早上我还在上班途中刷着手机,突然部门群里一阵骚动,”站点打不开了?!“ ”概率性页面报障“ ”咋回事啊“… 还睡意蒙胧的我立马吓的手机差点掉到地上去了,心急如焚的我直接就想在公交上掏出电脑来看,在惶恐的十分钟后,我迅速下了公交冲回公司自己的工位上,开始排查。
定位问题
打开了阿里云的控制台,看了下近半个小时的报错,基本都是同一个:
2020-12-10 08:50:19,868 ERROR 168244 [-/127.0.0.1/-/195ms POST /user/site/list]
nodejs.ReplyError: OOM command not allowed when used memory > 'maxmemory'.
复制代码
啥意思?就是redis溢出啦!当前redis的内存超过了它设定的最大内存容量。
赶紧登上服务器,开始作业
查看下redis内存信息先:
redis-cli info memory
乖乖,最大容量的才4.66G,已用4.65G,就是箭头指的那两个位置
当时情况着急没截图,这里放出来的只是查看redis内存占用的栗子,内存情况不是当时的。
那现在已经是实锤redis溢出了,看下是啥占用了那么多,查看占内存比较高的键
redis-cli --bigkeys
输出就是下面的样子(数据不是当时的)
redis-cli --bigkeys输出会显示最大占用内存的字符串key、set key、及hash k