一切福田,不離方寸,從心而覓,感無不通。

MISCONF Redis is configured to save RDB snapshots, but it is currently not a

开发环境最近遇到了"MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk"的问题,服务出现了问题,一看日志是Redis在报这个错误。

查了查网上的资料,解决方案基本都是修改Redis的配置文件,将

stop-writes-on-bgsave-error yes修改为 stop-writes-on-bgsave-error no

 

这是一个暂时性的解决方法。看了看stackoverflow上的回答,最高赞回答是这样的,如下图:

大概意思是:这是一个快速应急方法,如果你担心你的数据,那就首先检查下bgsave方法为什么会失败。bgsave方法是干什么的呢?咱来看下面这张图:

bgsave方法为什么会失败呢?咱们看看大佬的回答

大概意思是(翻译不到位的地方,还请见谅,英文比较菜):在BGSAVE时,Redis会fork一个子进程,把数据保存到硬盘上。你可以通过查看日志来获取BGSAVE失败的原因(Linux系统里Redis日志文件通常是在/var/log/redis/redis-server.log),大多数时候BGSAVE失败的原因是fork进程分配不到内存。更多时候,fork进程分配不到内存是因为跟操作系统的优化相冲突,即使操作系统有足够的内存。(下面一大段就不翻译了,意思是可以Redis官网找到相应的解释,文末会把相关文章链接都缀上)。当然大神也给出了解决方案

Linux系统中,修改/etc/sysctl.conf文件,添加配置:

vm.overcommit_memory=1

执行命令,使其生效

sudo sysctl -p /etc/sysctl.conf

参考文章链接:

stackoverflow的回答链接

BGSAVE命令解释

redis官网的faq

 

from:https://blog.csdn.net/u014071875/article/details/103715183