MISCONF Redis is configured to save RDB snapshots

【Redis】MISCONF Redis is configured to save RDB snapshots报错解决方案 阅读详情

 

lang80270人评论585人阅读2018-02-27 09:51:47

 

最近发现一个业务的数据无法插入redis中,尝试在redis中执行命令时报了如下错误提示:

127.0.0.1:6380> SET Key0 Value0
(error) 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.

大意为:(错误)misconf redis被配置以保存数据库快照,但misconf redis目前不能在硬盘上持久化。用来修改数据集合的命令不能用,请使用日志的错误详细信息。

这是由于强制停止redis快照,不能持久化引起的,运行info命令查看redis快照的状态,如下:

<span style="color:#333333"><span style="color:black"><code class="language-bash"><span style="color:slategray"># Persistence</span>
loading:0
rdb_changes_since_last_save:973
rdb_bgsave_in_progress:0
rdb_last_save_time:1511138863
rdb_last_bgsave_status:err
rdb_last_bgsave_time_sec:9
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok</code></span></span>

解决方案如下:

运行 config set stop-writes-on-bgsave-error no 命令,关闭配置项stop-writes-on-bgsave-error解决该问题,使数据能正常插入redis。

<span style="color:#333333"><span style="color:black"><code class="language-bash">127.0.0.1:6380<span style="color:#9a6e3a">></span> config <span style="color:#0077aa">set</span> stop-writes-on-bgsave-error no
OK
127.0.0.1:6380<span style="color:#9a6e3a">></span> SET Key0 Value0
OK</code></span></span>

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

 

其实这个问题的根源是服务器内存问题。

如果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' )使其生效。)

<span style="color:#333333"><span style="color:black"><code class="language-bash"><span style="color:#0077aa">echo</span> <span style="color:#669900">"vm.overcommit_memory = 1"</span> <span style="color:#9a6e3a">>></span>/etc/sysctl.conf
sysctl vm.overcommit_memory<span style="color:#9a6e3a">=</span>1</code></span></span>

如果不做修改,程序保存数据时会继续报“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”这个提示,找到了解决方法:
view plaincopy to clipboardprint?

// 原文:http://pydelion.com/2013/05/27/redis-cant-save-in-background-fork-cannot-allocate-memory/
If you get this error

Can't save in background: fork: Cannot allocate memory

it means that your current database is bigger than memory you have. To fix the issue enable vm.overcommit_memory:

sysctl vm.overcommit_memory=1

To have if after reboot add this line to /etc/sysctl.cnf:

vm.overcommit_memory=1

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

为什么系统明明还有内存,Redis会说内存不够呢?

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

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

Redis报错「MISCONF Redis is configured to save RDB snapshots」:持久化配置与内存策略的权衡 配置优先级关键业务:启用AOF或混合持久化,配置内存策略。非关键业务:禁用AOF,启用RDB,配置noeviction或内存策略。 阅读详情

相关推荐

Redis报错MISCONF Redis is configured to save RDB snapshots

修改 redis.conf ,将 stop-writes-on-bgsave-error 设置为 no,然后重启服务。两种方法解决:一是通过命令行修改,一是通过配置文件修改。检查是否成功:sysctl -p。

邓邓子的博客 2万+

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

http://www.redicecn.com/html/Linux/20131125/468.html 今天第二次遇到Redis “MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk”的问题。这个错误信息是Redis客户端工具在保存数据时候抛出的异

一名普通码农的菜地 2749

解决 MISCONF Redis is configured to save RDB snapshots 异常详解

最近遇到应用程序客户端在往redis中写入数据的时候发生了一个这样一个错误:第一次遇到这种错误还是蛮好奇的,主要是它无法重现(或必现),只是会偶尔出现,客户端抛出该异常后redis服务状态也是正常的,特意查了一下相关的资料,结合当时自己的操作场景,还算是解释的通的。该问题的大概原因在于:开启了snapshot的持久化模式,且在大量写入的时候bgsave持久化异常,导致客户端写入数据失败,原因译文中有提及。当然解决办法也很简单,设置参数。...

洛阳泰山的博客 4888

解决redis连接错误:MISCONF Redis is configured to save RDB snapshots

今天Redis服务器在连接redis数据库时突然报错: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 sna

jialiu111111的博客 2万+

Redis ‘MISCONF Redis is configured to save RDB snapshots, but is currently not able to …’持久化问题

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. 从翻译上来看Redis被配置为保存RDB快照,但目前无法在磁盘上持久存储。 解决过程: 1、所以我上网查找解决办法,修改建议最多的是修改配置文件或者在redis-cli命令里

即插即用!5分钟为你的SNN模型添加频谱注意力(DCT-SA模块实战)

本文介绍了如何为脉冲神经网络(SNN)快速集成即插即用的DCT-SA频谱注意力模块。该模块利用离散余弦变换(DCT)在频率域自适应加权特征,能有效提升模型对纹理、边缘的感知能力,并在CIFAR10-DVS等数据集上实现分类精度提升与脉冲发放率下降。文章以SpikingJelly框架和ResNet19为例,提供了详细的代码实现、集成步骤及参数调优实战指南。

kotlin6android的博客 609

redis异常解决:MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist

项目中用到redis做缓存服务器,近日出现这个异常: redis.clients.jedis.exceptions.JedisDataException: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify

rchm8519的专栏 3万+

MySQL安装配置教程(超级详细)

一、 下载MySQL Mysql官网下载地址:MySQL :: Download MySQL Installer (Archived Versions) 1. 选择要安装的版本,本篇文章选择的是5.7.31版本,点击Download下载 正在上传…重新上传取消 二、 安装MySQL 1. 选择设置类型双击运行mysql-installer-community-5.7.31.0.msi 这里选择是自定义安装,所以直接选择“Custom”,点击“Next” “Developer Default”是

m0_67322837的博客 5万+

MISCONF Redis is configured to save RDB snapshots, but it is currently not a

开发环境最近遇到了"MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk"的问题,服务出现了问题,一看日志是Redis在报这个错误。 查了查网上的资料,解决方案基本都是修改Redis的配置文件,将 stop-writes-on-bgsave-error ye...

段子猿 6万+

20240128 C#与SCPI协议实战:轻量级仪器控制库ScpiNet应用指南

本文详细介绍了轻量级C#库ScpiNet在仪器控制中的应用。相较于传统的NI-VISA,ScpiNet无需安装庞大运行时,通过纯C#实现直接与USB或以太网设备通信,支持跨厂商SCPI仪器。文章提供了从快速连接到实战封装、错误处理的完整指南,帮助开发者构建简洁高效的自动化测试系统。

h9j8k7l6m5n的博客 549

【CloudCompare】Windows源码编译CloudCompare

本文详细介绍了在Windows环境下编译安装CloudCompare V2.12.0的过程。首先配置了PCL 1.14.1、CMake 3.30.6和QT 5.14.2开发环境,使用Visual Studio 2022工具集。然后下载源码并通过CMake进行配置,特别注意勾选PLUGIN_STANDARD_QPCL以支持PCD文件加载。最后在VS2022中编译安装,并指出Debug模式下可能遇到的VTK库后缀问题,需添加CMAKE_DEBUG_POSTFIX变量解决。整个流程涵盖了从环境搭建到最终编译成功的

yijiujiusan的博客 489

Redis踩坑——MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on

最近将一个项目部署到了腾讯云上,项目里用了redis做数据缓存。运行了三天都没有什么问题,但是到了第四天我进入网站某个页面时出现了bug,截图如下 org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is redis.cli...

优快云_猹的博客 4万+

基于Python的军事装备数据爬取与分析:从网页抓取到数据可视化实战

本文将详细介绍如何使用Python最新技术栈构建一个完整的军事装备数据爬虫系统。我们将从爬虫基础讲起,逐步深入到异步爬取、反反爬策略、数据存储与分析等高级主题,最终实现一个能够自动抓取、清洗、存储和分析军事装备数据的完整解决方案。文章包含大量实战代码示例,涉及requests-html、aiohttp、Playwright等现代爬虫库,以及MongoDB存储、Pandas分析和Pyecharts可视化等技术。关键词:Python爬虫、军事数据、异步爬取、反反爬、数据可视化。

2201_76125261的博客 1190

解决Redis错误MISCONF Redis is configured to save RDB snapshots

前言 在redis中添加list,字符串类型的键值对之后,redisDeskManager上提示了一些错误信息: 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 erro

玲珑骰子安红豆,入骨相思知不知 1万+

华为OD机试 - 敌情监控 - 滑动窗口(Java 双机位C卷 200分)

说明 第一行第一个正整数5,表示敌人有5个营地,第二个正整数2,表示连续营地 的数量是2, 第3个正整数3, 表示后续会有3条查询的命令;接下来一行有 5个正整数,分别表示每个营地里开始的人的数,第1个营地开始有1个人,第 2个营地开始有2个人,第3个营地开始有2个人,第4个营地开始有3个人,第 5 个营地开始有3个人;第3条命令:Query 2 4 表示查询第2到第4个营地的总人数,结果:2+8=10 第一个输出是: 10,注意这里第3个营地人数在第2条命令中增加了6。第一行3个正整数:N K L。

学Java,找哪吒 765

Z-Image Turbo随机性增强插件的下载教程及使用方法 z-image生成图像太相似怎么办 Z-Image Turbo 整合包下载

Z-Image Turbo 是出了名的“seed 不敏感”,非常难做多样化图像创作。ComfyUi-ConditioningNoiseInjection 插件通过在conditioning(提示词编码)阶段加入可控噪声,成功解决了 Turbo 随机性不足的问题。它不仅能让 Turbo 产生更丰富的构图差异,还能保持主题稳定,是目前我测试过最有效的 Turbo 随机性增强工具。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1992

Redis排错经历:MISCONF Redis is configured to save RDB snapshots

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...

学习分享,一起进步 3885

第七天 Labview进阶(7.2 与汇川PLC通信)

运行环境: Labview 2020 Autoshop v4.10.1.1 该文档中包括Labview程序和汇川PLC程序,可以完美实现Labview与汇川PLC的通信。具体的使用教程可以参考本人的相关文章,讲解详尽,请尽情享用!

weixin_38637405的博客 3530

redis报错:MISCONF Redis is configured to save RDB snapshots

Redis在保存数据到硬盘时为了避免主进程假死,需要Fork一份主进程,然后在Fork进程内完成数据保存到硬盘的操作,如果主进程使用了14GB的内存,Fork子进程的时候需要额外的14GB,此时内存就不够了,Fork失败,进而数据保存硬盘也失败了。不同的淘汰策略适用于不同的场景和数据模式。无论使用哪个客户端,重要的是确保在设置键时指定过期时间,这样这些键就可以根据 maxmemory-policy volatile-lru 策略在内存达到限制时被适当地淘汰。

菜小徐的博客 2507

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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

今天第二次遇到Redis “MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk”的问题。这个错误信息是Redis客户端工具在保存数据时候抛出的异常信息。 网上查了一下,很多人都是建议“config set stop-writes-on-bgsave...

weixin_30488085的博客 90

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

redis MISCONF Redis is configured to save RDB snapshots报错解决

修改redis配置文件。

好好学电脑 611

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Redis报错:MISCONF Redis is configured to save RDB snapshots

通过修改redis.conf配置文件,将stop-writes-on-bgsave-error值改为no(效果和1一样)进入redis命令行执行:config set stop-writes-on-bgsave-error no。1、通过stop-writes-on-bgsave-error值设置为no即可避免这种问题。网上查阅后发现是因为,把redis快照强制关闭了导致不能持久化的问题。保存退出,杀掉Redis进程,然后重新启动。

qq_32807945的博客 2666
上一篇: Helm简介
下一篇: kubernetes资源对象--limitranges
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值