zoukankan      html  css  js  c++  java
  • redis.exceptions.ResponseError: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk.

    这个错误信息是Redis客户端工具在保存数据时候抛出的异常信息。

    网上很多人的回答都是“config set stop-writes-on-bgsave-error no”。

    这样做其实是不好的,这仅仅是让程序忽略了这个异常,使得程序能够继续往下运行,但实际上数据还是会存储到硬盘失败!

    今天出现问题时查看系统内存还有2GB左右,“感觉好像不是内存的缘故”(后面发现还是因为内存的缘故)。

    由于Redis是daemon模式运行的,没法看到详细的日志。

    修改配置文件设置logfile参数为文件(默认是stdout,建议以后安装完毕就修改这个参数为文件,不然会丢掉很多重要信息),重启Redis,查看日志,看到程序启动时就有一行警告提示:

    “WARNING overcommit_memory is set to 0! Background save may fail under low memory condition.

    To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.”

    (警告:过量使用内存设置为0!在低内存环境下,后台保存可能失败。为了修正这个问题,请在/etc/sysctl.conf 添加一项 'vm.overcommit_memory = 1' ,然后重启(或者运行命令'sysctl vm.overcommit_memory=1' )使其生效。)

    当时没明白意思,就忽略了。再启动Redis客户端,程序保存数据时继续报“MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk”异常,再查看Redis日志,

    看到有这样的错误提示“Can’t save in background: fork: Cannot allocate memory”,这个提示很明显"Fork进程时内存不够用了!"(还是内存的问题)。

    通过谷歌查询“Can’t save in background: fork: Cannot allocate memory”这个提示,找到了解决方法:

    1  // 原文:http://pydelion.com/2013/05/27/redis-cant-save-in-background-fork-cannot-allocate-memory/  
    2  If you get this error  
    3  Can't save in background: fork: Cannot allocate memory  
    4  it means that your current database is bigger than memory you have. To fix the issue enable vm.overcommit_memory:  
    5  sysctl vm.overcommit_memory=1  
    6  To have if after reboot add this line to /etc/sysctl.cnf:  
    7  vm.overcommit_memory=1 

    修改vm.overcommit_memory=1后问题果然解决了。

    为什么系统明明还剩2GB的内存,Redis会说内存不够呢?

    网上查了一下,有人也遇到类似的问题,并且给出了很好的分析(详见:http://www.linuxidc.com/Linux/2012-07/66079.htm).

    简单地说:Redis在保存数据到硬盘时为了避免主进程假死,需要Fork一份主进程,然后在Fork进程内完成数据保存到硬盘的操作,

    如果主进程使用了4GB的内存,Fork子进程的时候需要额外的4GB,此时内存就不够了,Fork失败,进而数据保存硬盘也失败了。

    本文来自 https://blog.csdn.net/chenxiabinffff/article/details/78941261 ,我在这里记作笔记,分享给大家,再次感谢原博主!

  • 相关阅读:
    树莓派3(Raspbain系统)安装.net环境
    CSS3实现鼠标悬停扩展效果
    WINIO64位模拟键鼠操作
    json在线校验
    阿里云ali-oss图片增加水印
    babel使用中不想使用 严格模式 如何去除?
    记录移动端html界面中底部输入框触发焦点时键盘会把输入框遮挡的问题
    nodejs 项目,请求返回Invalid Host header问题
    css如何画出类似原生的线条?
    js回到顶部 动画速度 (自己记录)
  • 原文地址:https://www.cnblogs.com/beiyi888/p/13303957.html
Copyright © 2011-2022 走看看