数据库
首页 > 数据库> > 记一次redis异常MISCONF Redis is configured to save RDB snapshots, but is currently not able

记一次redis异常MISCONF Redis is configured to save RDB snapshots, but is currently not able

作者:互联网

两天前将引入redis的项目第一次部署到服务器中,今天发现网站页面都是500,服务器中redis是在运行的,看了SLF4J日志发现报了redis有关的错误,发现RDB持久化出现问题。网上查了下发现RDB持久化过程是有两种,同步回写SAVE 和 异步回写BGSAVE,BGSAVE是fork主进程,默认需要当前主线程的内存大小才能成功(比如主线程 1G,则需要向操作系统申请成功1G内存给子进程才可以进行),解决办法是 进入  /etc/sysctl.conf ,添加 vm.overcommit_memory=1,表示允许使用内存直到用光为止。

redis的子进程创建出来时是和父进程共享相同的物理页,父进程如果要进行数据操作,将把对应的数据页创建一个副本进行修改,而子进程在fork过程中共享整个父进程的内存快照。这个就是COW

 

 


参考:https://www.freesion.com/article/7439956888/

Redis 持久化内存不足分析 - 简书 (jianshu.com)

标签:MISCONF,BGSAVE,able,redis,内存,RDB,进程,com
来源: https://www.cnblogs.com/GridYe/p/15618967.html