如何通过单次OOM事件分析Redis内存使用情况?
- 内容介绍
- 文章标签
- 相关推荐
本文共计5006个文字,预计阅读时间需要21分钟。
前言,最近,有用户通过redis的hmset命令写入了一个单个field,值为1MB,执行了总大小100MB左右的命令,容器内存限制为512MB,执行时触发了oom+killer。最后查看+/var/log/syslog日志,发现异常。
前言最近,有用户反馈自己通过redis的hmset命令写入了一个单个field为1mb,总大小100m左右的命令,在512mb内存限制的容器当中执行,结果却触发了oom killer。最后查看/var/log/syslog日志,发现内容如下。并且:这个oom是在开启aof持久化的时候触发的。
你不禁会发出疑问:一个100MB的命令怎么会让内存限制为512MB的Redis实例被kill掉呢?
下面,我先列举一些关键的信息,然后再和大家一起分析。
- Redis版本:5.0.9
- Docker容器内存限制512MB。
- 操作系统,并关闭内存交换。
本文共计5006个文字,预计阅读时间需要21分钟。
前言,最近,有用户通过redis的hmset命令写入了一个单个field,值为1MB,执行了总大小100MB左右的命令,容器内存限制为512MB,执行时触发了oom+killer。最后查看+/var/log/syslog日志,发现异常。
前言最近,有用户反馈自己通过redis的hmset命令写入了一个单个field为1mb,总大小100m左右的命令,在512mb内存限制的容器当中执行,结果却触发了oom killer。最后查看/var/log/syslog日志,发现内容如下。并且:这个oom是在开启aof持久化的时候触发的。
你不禁会发出疑问:一个100MB的命令怎么会让内存限制为512MB的Redis实例被kill掉呢?
下面,我先列举一些关键的信息,然后再和大家一起分析。
- Redis版本:5.0.9
- Docker容器内存限制512MB。
- 操作系统,并关闭内存交换。

