MISCONF Redis is configured to save RDB snapshots, but is cu
背景: 周一回来上班,在使用codis进行数据操作时,遇到错误提示:
Redis被配置为保存数据库快照,但它目前不能持久化到硬盘。用来修改集合数据的命令不能用。请查看Redis日志的详细错误信息。 原因有以下三种情况: 1. 强制关闭Redis快照导致不能持久化。 2. 磁盘满了也会报这个错误 3.?发生此错误是由于BGSAVE失败。在BGSAVE期间,Redis派生一个子进程以将数据保存在磁盘上。这个错误可以从日志中检查BGSAVE失败的确切原因(通常在linux计算机上/var/log/redis/redis-server.log ),但是很多时候BGAVE失败是因为fork无法分配内存。也有可能是,由于OS的优化存在冲突,导致fork无法分配内存(尽管计算机具有足够的可用RAM)。(大部分情况是该错误)。 文档:https://redis.io/topics/admin
中文意思:
简单说明: 比如服务器目前是8g内存,其他进程占用内存为1g,redis占用内存为5g,剩余可用内存为2g, 当redis触发bgsave时,那么就会触发?Can't save in background: fork: Cannot allocate memory。因为redis在bgsave时会fork一个进程时,由于系统剩余内存不足5g,就触发错误。 查看日志文件: cd?/var/lib/redis_7021 tail?-n?10?redis_7021.log 临时解决方案: 运行config set stop-writes-on-bgsave-error no 命令后,关闭配置项stop-writes-on-bgsave-error解决该问题。 这个作用是:停止保存快照,没有实际解决问题。 root@ubuntu#?./redis-cli 127.0.0.1:6379>?config?set?stop-writes-on-bgsave-error?no OK 127.0.0.1:6379>?lpush?myColour?"red" (integer)?1 第二种解决方法:
总结:
参考文档: https://redis.io/topics/admin https://stackoverflow.com/questions/14958799/choosing-redis-maxmemory-size-and-bgsave-memory-usage (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |