一次RedisOOM 排查
一次应用运行,接口访问异常,看指标侯发现是Redis键太多OOM了
排查思路
导出每个 key 的内存大小,然后分析,删除key或者设置过期时间
Redis服务器连接信息
REDIS_HOST=“r-xxxxx.redis.xxxx.com”
REDIS_PORT=“6379”
REDIS_DB=“0”
REDIS_PASSWORD=“xxxxxx”
导出所有keys
keys=$(redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB -a $REDIS_PASSWORD keys “*”)
遍历所有keys并获取占用内存大小
for key in $keys
domemory=$(redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB -a $REDIS_PASSWORD memory usage "$key")echo "Key, $key, $memory" > ${REDIS_DB}.csv
done
-
excel 分析数据
「数据」-「主要字段-列C」-「次序-降序」
-
问题原因
告警任务太多,造成 func 占用 redis 大量内存,8个G 的redis,他占用了7个 G