微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

记一次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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐