[Redis] OOM 问题排查

发现

在 jedis 写入 key 时发现了以下异常日志(部分)

OOM command not allowed when used memory > 'maxmemory'.

排查

  1. 服务器内存是否满了
  2. redis 内存限制是否超过限制了

方法

服务器内存是否满可以使用 free 命令,这里就不写了

我们主要来看下如何判断 redis 内存是否超过限制了

$ redis-cli -h xxx.xxx.xxx.xxx -p 6379
$ xxx.xxx.xxx.xxx:6379> info

查找 used_memorymaxmemory
human 后缀表示已转换成适合人类阅读的文本

used_memory:270098024
used_memory_human:257.59M
...
maxmemory:200000000
maxmemory_human:190.73M

我们看到此时内存最大使用限制为 190M,而已使用了 257M
看来是超过 redis 内存使用限制了,那是不是存在大 key?

我们试试使用大 key 排查命令

$ redis-cli --bigkeys -h xxx.xxx.xxx.xxx -p 6379

显示结果:

Biggest string found 'XXX' has 237535676 bytes

至此问题排查完毕,是大 key 导致 redis 内存超过限制,无法再写入

你可能感兴趣的:([Redis] OOM 问题排查)