您的位置:首页 > 数据库 > Redis

MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk

2016-01-25 14:46 726 查看
环境:ubuntu14.04

redis报错:

MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.

解决:

1,/etc/sysctl.conf中添加:

vm.overcommit_memory=1

2,ps aux|grep redis

找到redis-server服务,kill掉

3,启动redis-server:

sudo nohup redis-server   /YOU_CONF_PATH/redis.conf &

这里/YOU_CONF_PATH/redis.conf表示redis配置文件的路径,没有特别配置不加;不需要root用户的不用加sudo

其他查询到的资料:

内核参数说明如下:                                                                                                                                                                                                      

overcommit_memory文件指定了内核针对内存分配的策略,其值可以是0、1、2。                              

0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。

1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。

2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

错误原因:

简单地说:Redis在保存数据到硬盘时为了避免主进程假死,需要Fork一份主进程,然后在Fork进程内完成数据保存到硬盘的操作,如果主进程使用了4GB的内存,Fork子进程的时候需要额外的4GB,此时内存就不够了,Fork失败,进而数据保存硬盘也失败了。

注释:我top查看时,内存也是4G用了大概一半后报错的。

参考:
http://www.redicecn.com/html/Linux/20131125/468.html http://blog.csdn.net/anghlq/article/details/7087069 http://www.linuxidc.com/Linux/2012-07/66079.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis