Redis fork进程分配不到内存解决方案
MISCONFRedisisconfiguredtosaveRDBsnapshots,butitiscurrentlynotabletopersistondisk.
RedisBgsave命令用于在后台异步保存当前数据库的数据到磁盘。
BGSAVE命令执行之后立即返回OK,然后Redisfork出一个新子进程,原来的Redis进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。
语法
redisBgsave命令基本语法如下:
redis127.0.0.1:6379>BGSAVE
原因:
在BGSAVE时,Redis会fork一个子进程,把数据保存到硬盘上。你可以通过查看日志来获取BGSAVE失败的原因(Linux系统里Redis日志文件通常是在/var/log/redis/redis-server.log),大多数时候BGSAVE失败的原因是fork进程分配不到内存。更多时候,fork进程分配不到内存是因为跟操作系统的优化相冲突,即使操作系统有足够的内存。
解决方法一:
修改redis.conf文件:
vimredis.conf
然后使用快捷匹配模式:/stop-writes-on-bgsave-error定位到stop-writes-on-bgsave-error字符串所在位置,接着把后面的yes设置为no即可。
解决方法二:
修改sysctl.conf文件,
sudovim/etc/sysctl.conf
添加配置:
vm.overcommit_memory=1
执行命令,使其生效
sudosysctl-p/etc/sysctl.conf
重启Redis。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。