之前在x86架构的服务器部署redis集群,未遇到题中问题;然而在ARM架构的服务器部署redis集群,第一次遇到如此问题。虽然问题已经解决,但不清楚问题的具体原因,在此做个记录。


性能测试过程中,通过pinpoint捕捉到如下报错:

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-write...(618)

这个错误通常表示Redis配置了保存RDB快照,但当前无法将快照持久化到磁盘上。


解决办法如下:

方法一:通过命令行修改

redis-cli登入redis,输入命令:config set stop-writes-on-bgsave-error no

127.0.0.1:6379> config set stop-writes-on-bgsave-error no

方法二:通过配置文件修改

修改redis.conf配置文件,将stop-writes-on-bgsave-error 的参数yes改为no。随后重启redis服务。

 230 # However if you have setup your proper monitoring of the Redis server
231 # and persistence, you may want to disable this feature so that Redis will
232 # continue to work as usual even if there are problems with disk,
233 # permissions, and so forth.
234 stop-writes-on-bgsave-error yes

问题原因分析:

就上述【方法二】中的redis配置文件信息,咨询chatGPT,给出如下回复:

230号行:然而,如果你已经正确设置了对Redis服务器的监控和持久化,你可能希望禁用这个特性,以便即使出现磁盘、权限等问题,Redis仍然可以正常工作。

231号行:该行是一个注释,提醒用户可以禁用Redis报告错误的功能,因为在正确设置了监控和持久化的情况下,Redis可以继续正常工作,即使磁盘或权限等存在问题。

232号行:注释说明了禁用此功能后的效果,即Redis将继续以往的工作方式运行,即使在磁盘、权限等方面存在问题。

233号行:该行是一个注释,提醒用户可能还有其他类似的问题。

234号行:stop-writes-on-bgsave-error yes表示当RDB快照失败时,停止写入命令。这意味着如果RDB快照操作失败,Redis会禁止执行可能修改数据集的命令。

进一步咨询chatGPT,什么情况下会出现redis RDB快照失败的情况?继续给出如下回复:

Redis RDB快照可能会失败的几种情况包括:

磁盘空间不足:当Redis尝试将RDB快照写入磁盘时,如果磁盘空间不足以容纳快照文件,就会导致快照失败。

权限问题:如果Redis进程没有足够的权限将RDB快照文件写入指定的目录,就会导致快照失败。确保Redis进程具有正确的权限来访问和写入目标目录。

磁盘故障:如果磁盘发生错误或损坏,可能会导致RDB快照无法成功写入磁盘,从而导致快照失败。

系统错误或中断:在执行RDB快照过程中,如果发生了系统错误或中断(如服务器崩溃、断电等),可能会导致快照失败。

内存不足:如果Redis实例的内存使用达到上限,可能会导致RDB快照失败。在执行快照之前,确保Redis实例有足够的可用内存来完成快照操作。

其他配置问题:一些配置问题,如错误的保存频率、目录配置错误等,也可能导致RDB快照失败。

需要注意的是,RDB快照失败不会导致数据丢失,因为Redis仍然可以继续运行并将数据保存在内存中。但是,如果持久化是关键需求,建议及时解决RDB快照失败的问题以确保数据的持久性和可靠性。

就此推测,应该是由于上述的某原因导致redis RDB快照失败,然后必须得将stop-writes-on-bgsave-error 的参数值配置为no才行。进一步推理:如果解决了上述导致redis RDB快照失败的问题,即使将参数修改回默认的yes,重启redis服务,问题也将不复存在。

redis集群报错:MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk.的更多相关文章

  1. Redis常见报错之 Redis::CommandError (MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk)

    在Redis运行过程中,报错信息如下: Redis::CommandError (MISCONF Redis is configured to save RDB snapshots, but it i ...

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

    早上来到公司,线上的项目报错: Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionExcepti ...

  3. redis异常信息:MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk.。。。。

    redis.exceptions.ResponseError: MISCONF Redis is configured to save RDB snapshots, but it is current ...

  4. 解决MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk.问题

    突然发现昨天刚搭建的websocket不能连接了,提示: MISCONF Redis is configured to save RDB snapshots, but it is currently ...

  5. redis集群报错

    写入redis集群报错:(error) MOVED 6918 解决方法:redis-cli -c -p 7001 -h 10.0.0.104

  6. redis集群报错:(error) CLUSTERDOWN Hash slot not served

    百度上坑太多,如果你遇到搭建redis集群的时候出现这个错误在百度上找到解决办法基本上都是坑. 首先集群搭建完成后,你肯定去登陆redis进行测试 1.redis01/redis-cli -h &qu ...

  7. redis集群报错:(error) CLUSTERDOWN The cluster is down

    更换了电脑,把原来的电脑上的虚拟机复制到了新电脑上,启动虚拟机上的centos系统,然后启动redis集群(redis5版本),发现集群可以启动,redis进程也有,但是连接集群中的任意节点就报错,如 ...

  8. maven项目中使用redis集群报错: java.lang.NumberFormatException: For input string: "7001@17001"

    解决:由于redis集群的采用的版本是2.7的,在maven的pom.xml中将jedis的版本改成2.9的就可以了

  9. maven项目中使用redis集群报错: java.lang.NumberFormatException: For input string: "7006@17006"

    Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [redis.client ...

  10. redis集群报错:(error) MOVED 11469 192.168.163.249:7002

    应该是你没有启动集群模式(即缺少了那个"-c"): redis-cli -c -h yourhost -p yourpost

随机推荐

  1. Spring注解系列——@PropertySource

    在Spring框架中@PropertySource注解是非常常用的一个注解,其主要作用是将外部化配置解析成key-value键值对"存入"Spring容器的Environment环 ...

  2. Java并发(一)----进程、线程、并行、并发

    一.进程与线程 进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存.在指令运行过程中还需要用到磁盘.网络等设备.进程就是用来加载指令.管理内存.管理 ...

  3. Numpy浅拷贝与深拷贝

    Numpy中的浅拷贝与深拷贝 浅拷贝 共享内存地址的两个变量,当其中一个变量的值改变时另外一个也随之改变. Example a = np.array([1, 2, 3, 4, 5]) b = a pr ...

  4. Springboot一些常用注解

    Springboot启动注解 @SpringbootApplication 这个注解是Springboot最核心的注解,用在Springboot的主类上,标识这是一个Springboot应用,用来开启 ...

  5. Intellij_idea for循环 快捷键

    for循环四次.用 i 进行for循环 4.for fori 增强for循环 int [] arrays=new int[2]; arrays.for

  6. 从内核源码看 slab 内存池的创建初始化流程

    在上篇文章 <细节拉满,80 张图带你一步一步推演 slab 内存池的设计与实现 >中,笔者从 slab cache 的总体架构演进角度以及 slab cache 的运行原理角度为大家勾勒 ...

  7. MySQL匿名空用户名处理

    问题描述:公司漏扫发现数据库内出现空用户名及密码,需要对这些用户进行整改 1.首先出现了疑问,这些空的用户名是怎么出现的,而且不附带密码. 2.可以手动这样创建这样的用户名和密码形式么. 3.如果能这 ...

  8. Kubernetes入门实践(Job/CronJob)

    基于Pod的设计理念,Kubernetes有两种对象Job和CronJob Job和CronJob组合了Pod,实现了对离线业务的处理.如Nginx和busybox,分别代表了Kubernetes里的 ...

  9. 【Ubuntu】1. 创建虚拟机

    这一篇主要写了虚拟机的创建,不包含操作系统的安装,中间有些步骤没有提到的根据默认操作即可,也可以根据个人情况设置. 点击创建新的虚拟机 这一步可以选择典型安装,过程更简单些,这里我选择自定义. 在安装 ...

  10. 关于前端vue打包项目以及静态网站部署项目到阿里云ECS云服务器初学简单教程

    准备工作: 1.首先进入https://ecs.console.aliyun.com/ 领取或者购买一台简单的ECS云服务器. 进入网站注册登录后拉到页面最下面或者顶部搜索免费云服务器领取立即试用 , ...