redis持久化失败问题(MISCONF Redis is configured to save RDB snapshots, but ......)问题解决

本文主要是介绍redis持久化失败问题(MISCONF Redis is configured to save RDB snapshots, but ......)问题解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天同事反应测试环境业务一直报错,好像是redis持久化出现了问题,并给出了错误信息,让我帮忙看一下,说明明还有2G内存为何还会报错

MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.. channel: [id: 0xb07fbbd2, L:/10.4.11.84:43534 - R:ruigecloud-redis/10.4.11.165:6379] command: (EXPIRE), params: [[49, 51, 58, 114, 117, 105, 103, 101, 99, 108, ...], 2592000]

我想内存不够用通常导致持久化失败,但同事告知还有2G内存,我大致明白问题出在哪里了

问题主要有以下几个方面:

1、内存确实没有不够没有合理化分配
解释:Redis在保存数据时为避免主进程假死,会Fork一份主进程,Fork进程完成数据保存到硬盘的操作,若主进程用了4GB,Fork子进程的时候需要额外的4GB,所以内存确实不够了


2、临时处理(日志中有提示“because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option).”)

连接redis后运行 config set stop-writes-on-bgsave-error no 命令

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

3、为了看日志方便一定要配置日志路径:

修改配置文件设置logfile

4、低内存环境下,修正后台保存失败问题。

    /etc/sysctl.conf

    末尾添加

   vm.overcommit_memory = 1

sysctl -p

目前为止此问题暂时解决,还需要对Redis的相关配置进行优化!!!

5、配置日志文件、日志级别

loglevel notice

logfile "/data/log/redis-6379.log"

6、做好内存容量规划,设置回收策略

maxmemory 4294967296
maxmemory-policy volatile-lru

允许长期不活跃的数据从Redis丢失

dir 路径
dbfilename dump6379.rdb

7、重启redis

Redis的重启不要kill!!!
127.0.0.1:6379> SHUTDOWN
 

这篇关于redis持久化失败问题(MISCONF Redis is configured to save RDB snapshots, but ......)问题解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/751680

相关文章

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

Redis事务与数据持久化方式

《Redis事务与数据持久化方式》该文档主要介绍了Redis事务和持久化机制,事务通过将多个命令打包执行,而持久化则通过快照(RDB)和追加式文件(AOF)两种方式将内存数据保存到磁盘,以防止数据丢失... 目录一、Redis 事务1.1 事务本质1.2 数据库事务与redis事务1.2.1 数据库事务1.

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

mac安装redis全过程

《mac安装redis全过程》文章内容主要介绍了如何从官网下载指定版本的Redis,以及如何在自定义目录下安装和启动Redis,还提到了如何修改Redis的密码和配置文件,以及使用RedisInsig... 目录MAC安装Redis安装启动redis 配置redis 常用命令总结mac安装redis官网下

解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题

《解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题》本文主要讲述了在使用MyBatis和MyBatis-Plus时遇到的绑定异常... 目录myBATis-plus-boot-starpythonter与mybatis-spring-b

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外