zhmg23

我们是如此的不同

Redis执行Bgsave失败问题分析

在登陆redis,执行bgsave时,发现rdb_last_bgsave_status:err,经过分析,出现rdb_last_bgsave_status:err,可以从如下3种情况来排查 

1、检查redis存储文件夹权限

      应该给redis数据存储文件夹权限配置运行用户权限


2、检查stop-writes-on-bgsave-error是否配置为yes了,应该配置为no

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


3、检查/proc/sys/vm/overcommit_memory的值

 设置 echo 1 > /proc/sys/vm/overcommit_memory


overcommit_memory 指定了Linux内存分配的策略。可选值:0,1,2

0:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。

1:表示内核允许分配所有的物理内存,而不管当前的内存状态如何。

2:表示内核允许分配超过所有物理内存和交换空间总和的内存


通过命令,可以看到bgsave执行的状态及时间

#  redis-cli  -p 6380 info |grep rdb_last_bgsave*

  

以上是执行redis bgsave所遇到的问题记录,另外,bgsave与save的区别,是

BGSAVE命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。

SAVE 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。会阻塞当前redis进程


https://redisdoc.com/server/save.html

https://redisdoc.com/server/bgsave.html

评论