redis replica时触发了BGSAVE FAIL的问题

故障分析 | redis cluster 从库无法自动恢复同步案例一则 作者:任坤现居珠海,先后担任专职 Oracle 和 MySQL DBA,现在主要负责 MySQL、mongoDB 和 Redis 维护工作。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 阅读详情
今天做redis replica碰到一个问题。

执行了slaveof命令后,slave info显示与master断开,查看系统日志显示报错如下:

Connecting to MASTER...
[17727] 07 Dec 11:31:03 * MASTER <-> SLAVE sync started
[17727] 07 Dec 11:31:03 * Non blocking connect for SYNC fired the event.
[17727] 07 Dec 11:31:03 # MASTER aborted replication with an error: ERR Unable to perform background save

于是查看master的系统日志,报错如下:

Slave ask for synchronization
[2487] 07 Dec 14:08:09 * Starting BGSAVE for SYNC
[2487] 07 Dec 14:08:09 # Can't save in background: fork: Cannot allocate memory
[2487] 07 Dec 14:08:09 * Replication failed, can't BGSAVE

在控制台执行bgsave果然不行,google了良久, 找到了问题根源:

再一看master的系统日志里启动部分,果然有警告如下:

[5660] 08 Oct 13:49:56 # 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.

定位到问题的关键是参数vm.overcommit_ memory的设定,参考 http://iloutuoli.blogspot.com/2011/11/sysctl-vmovercommitmemory.html所说:

vm.overcommit_memory 表示内核在分配内存时候做检查的方式。这个变量可以取到0,1, 2三个值。对取不同的值时的处理方式都定义在内核源码 mm/mmap.c 的 __vm_enough_memory 函数中。
取 1 的时候 :
此时宏为 OVERCOMMIT_ALWAYS,函数直接 return 0,分配成功。
取 2 的时候: 
此时宏为 OVERCOMMIT_NEVER,内核计算:内存总量×vm. overcommit_ratio/100+SWAP 的总量,如果申请空间超过此数值,则分配失败。vm. overcommit_ratio 的默认值为50。
取 0 的时候:
此时宏为 OVERCOMMIT_GUESS,内核计算:NR_FILE_ PAGES 总量+SWAP总量+slab中可以释放的内存总量, 如果申请空间超过此数值,则将此数值与空闲内存总量减掉 totalreserve_pages(?) 的总量相加。如果申请空间依然超过此数值,则分配失败。
以上为粗略描述,在实际计算时,如果非root进程, 则在计算时候会保留3%的空间,而root进程则没有该限制。 详细过程可看源码。

由于这块配置涉及系统内核,需要root权限,  接下来就只有等着ops帮忙操作了。

数据库之Redis运维手册(私人整理) 1、redis配置文件 #cat 8000.conf daemonize no #[yes/no]默认值no,该参数用于定制redis服务是否以守护模式运行。 pidfile /var/run/redis.pid #默认值/var/run/redis.pid,指定redis服务的进程号文件路径,以守护模式运行时需要配置本参数; port 8000 #默认值6379,指定redis服务... 阅读详情

相关推荐

Redis集群方案深度对比:从哨兵模式到Redis-Cluster的选型与实战

在分布式系统架构中,数据分片和高可用性是实现高性能、可扩展缓存服务的核心原理。通过将数据分散到多个节点,分片技术突破了单机容量与性能瓶颈,而高可用机制则确保了服务的持续可靠。Redis作为主流缓存解决方案,其官方原生分片集群方案Redis-Cluster,采用去中心化的槽位(Slot)机制与Gossip协议,提供了线性扩展能力和内置的故障转移,技术价值在于简化了大规模数据集的水平扩展架构。相比之下,基于哨兵(Sentinel)的主从复制集群,则侧重于提供自动故障转移的高可用性,其架构更简单,但数据分片需借助

weixin_30859423的博客 512

redis错误排查

日志集中式监控平台上线已经有一段时间,但是大部分情况下只是作为发布或者出问题时查看日志的便利工具使用。平时大家都不怎么主动上去看看。于是前几天把应用的错误日志也加上邮件、Hi和短信报警,马上就收到很多错误报警,引起了大家的重视。其中有一个Redis报错: Push notify error: => redis.clients.jedis.exceptions.JedisConnectionExc

rongge2008的专栏 4万+

【信息科学与工程学】计算机科学与自动化——第三百零四篇 高性能系统开发指南01

高并发:限流、熔断、降级高性能:红包拆分、多级缓存、大Key/热Key拆分、Pipeline、线程池、RocketMQ零丢失、幂等、分布式锁、集群缩容、分批入库海量数据处理:日志分表分片、跨表查询、冷热分层、大数据引擎服务器选型系统安全:网关安全、服务器安全、云存储安全、风控、监控、测试数据一致性:缓存与数据库一致性、大厂方案、蓝绿回滚、流量一致性、流程一致性项目与团队管理:流程问题、管理问题(风险、成本、人员、文档、培训)稳定性建设:上线三板斧、线上五步闭环、混沌工程、容量规划。

weixin_49199313的博客 249

记一次redis主从连接的错误

Redis版本 redis-4.0.11 安装后多实例均可正常使用,将其中一个实例设置为从服务器后,调用info replication报master_link_status:down; 外部原因: 1.因为redis部署在阿里云服务器上,首先在阿里云方法各redis实例的端口; 2.使用系统为ubuntu,设置ufw allow 各实例端口 步骤一:开启log日志, 设置log等级为...

u011528917的博客 1万+

嵌入式:简单的service框架

在嵌入式中,我们获取一个资源、设置一个变量、更新数据的话最直接的方式就是直接调用一个函数。这样的写法也可以满足基本的功能,前提是这个系统是只要一个任务,只有一个while(1)如图1.1。图1.1当有两个或者两个以上的任务的时候,同时调用一个函数(设置一个状态值、操作同一个资源、操作指针等行为)的流程如图1.2。图1.2当两个任务同时操作一个资源的时候,就会有重入的问题,会导致想不到的异常问题(数据不对、指针异常等)。

stupid的博客 986

西门子工业物联网云平台 Insights Hub 技术白皮书

Insights Hub是西门子公司推出的工业物联网云平台,它是一个使用开放技术的基于云架构的平台,能够为制造业企业提供物联网连接、数据分析、应用开发等一系列服务。Insights Hub的设计理念是“连接、分析和运营”,即通过连接物理设备、收集数据并进行分析,来优化工业生产的运营和管理。

可爱的刘三岁的博客 3335

Redis trouble19 -- 集群从节点同步主节点数据异常,内存溢出同时产生大量core文件问题

现象描述: redis5.0.5集群要对集群进行扩容,先扩从节点,由于是docker swarm管理的镜像启动,策略是一直重启,产生以下几点现象: 1.当从节点没有启动起来并且每次重启都会加载出一个core.xxxx文件,文件大小与dump和aof文件同大小 2.Redis aborting for OUT OF MEMORY 及 Out Of Memory allocating 18...

weixin_39523456的博客 2186

Doris + Iceberg 实现高效数据湖分层:架构解析与最佳实践

本文深入解析了如何利用Doris与Iceberg构建高效的数据湖冷热分层架构。通过将高频访问的热数据存储在Doris中以实现毫秒级查询,同时将历史冷数据归档至低成本的Iceberg存储,该方案在保障查询性能的同时显著降低了总体拥有成本。文章详细阐述了从架构设计、自动化迁移到统一查询的最佳实践,为应对海量数据下的成本与性能平衡提供了实战指南。

weixin_29207533的博客 135

Redis源码解读(二十)——全量同步

主从同步—全量同步的设计与实现

yh88623131的博客 661

来!简单了解一下计算机发展史!

​ 1936年,英国数学家阿兰・麦席森・图灵提出了一种抽象的计算模型——图灵机( Turing machine)。图灵机,又称图灵计算机,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人类进行数学运算。​ 图灵机是一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。

m0_57290404的博客 2907

2.6 SST的核心性能指标体系

本文构建了固态变压器(SST)的核心性能指标体系,涵盖电气性能、可靠性、经济性和环境适配性四大类指标。电气性能指标包括运行效率(≥97%)、功率密度(≥900kVA/m³)、谐波畸变率(≤3%)等关键参数;可靠性指标设定MTBF≥43800h、年均故障率≤1.2次/年等标准;经济性指标对比分析了初始购置成本(45-55万元)和全生命周期成本(48-55万元);环境适配性指标则明确了温度、海拔等工况要求。该体系采用量化公式和国标限值,为SST的性能测试、选型和优化提供了统一标准。

技术工作者 602

Nosql之Redis详解

概述 定义:Redis是一个开源的,使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 redis是一个key-value存储系统。和Memcached类似,只是它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash......

企业实战系列集 ●●● https://ximenjianxue.blog.youkuaiyun.com 1605

小米汽车技术路线

从小米的电子电器架构来看,行业内EEA已经由域集中逐渐过度到域融合+区域控制的架构并向着中央计算+区域控制的方向发展。 而小米汽车智驾算法也从基于高精地图模块化架构,到去高精地图模块化架构,再到端到端架构,这也正是行业对于智驾算法演进的共识。

HITbingdu的博客 3786

CentOS 7 手动搭建 Redis 集群实战:从编译到高可用容灾

Redis 集群是分布式缓存系统的核心架构,其本质是基于 Gossip 协议的去中心化节点协同机制,通过哈希槽(hash slot)实现键空间水平切分与自动路由。理解 cluster-node-timeout 超时判定、cluster-require-full-coverage 容错策略及集群总线(cluster bus)通信原理,是保障百万级并发下低延迟、零数据丢失的关键。该技术广泛应用于电商大促、金融交易等强一致性场景,尤其在私有云与混合云环境中,需深度定制网络、内核参数与启动生命周期管理。本文聚焦 C

weixin_33675507的博客 406

基于Blender软件对Matterport3D数据集场景可视化

使用Blender软件对 Matterport3D 中的室内场景进行可视化。

qq_44100524的博客 289

OFDM调制解调系统信道估计和均衡算法的MATLAB仿真

然后,从接收到的信号中提取导频序列,并使用LS算法进行信道估计。OFDM(正交频分复用)是一种常用于高速数据传输的调制技术,它将高速数据流分割成多个低速子载波,通过在不同的子载波上传输数据,实现了频域上的正交性。因此,信道估计和均衡算法在OFDM系统中起着至关重要的作用,用于减小信道衰落引起的影响。通过运行上述代码,可以进行基于LS算法的OFDM调制解调系统信道估计和均衡的MATLAB仿真。本文将介绍一种基于LS(最小二乘)算法的OFDM调制解调系统信道估计和均衡算法,并提供相应的MATLAB仿真代码。

uote_e的博客 229

第40章:【高级篇综合实战】从零设计企业级 Redis 平台

本文摘要: 一家大型企业集团内部存在严重的Redis管理混乱问题,全集团分散着327个不同版本的Redis实例,存在重大安全隐患。近年来发生了三次重大事故:双十一期间主库OOM导致支付链路雪崩、春节红包期间Cluster集群Gossip风暴引发服务延迟、Module升级不当导致全量数据丢失。根因分析显示,问题核心在于缺乏统一的实例生命周期管理、标准化高可用方案、安全基线和容量治理。

davidwang456的专栏 1239

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

从零搭建 Redis 高可用集群:安装、配置、主从、哨兵、集群一站式教程

rwxr-xr-x 1 root root 656280 Oct 20 2021 redis-benchmark #性能测试程序lrwxrwxrwx 1 root root 12 Oct 20 2021 redis-check-aof -> redis-server #AOF文件检查程序lrwxrwxrwx 1 root root 12 Oct 20 2021 redis-check-rdb -> redis-server #RDB文件检查程序。

2401_83463699的博客 194

蓝牙模块HM-10手册

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

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

kv存储主从复制的设计与实现

为了维持一致,命令传播机制会像一个单向的管道,将主节点上执行的、会改变数据的命令,持续不断地发送给所有已连接的从节点。此时,主节点会主动从积压缓冲区中找到这些缺失的命令,并重新发送给从节点,从而保证了数据的最终一致性。为了应对从节点可能发生的短暂断线,Redis 在命令传播的同时,会将所有写命令也写入一个由主节点维护的 复制积压缓冲区(Replication Backlog) 中。的,这意味着主节点在执行完写命令后立即返回客户端结果,无需等待从节点确认,这保证了主节点的高性能。

weixin_52079669的博客 342

3台2核4G服务器搭建高可用AI Agent生产集群:从Demo到部署实战

在软件工程实践中,微服务架构与容器化技术已成为构建高可用、可扩展应用系统的核心方法论。其原理在于通过将应用拆分为独立的服务单元,并利用容器进行封装和编排,从而实现资源的隔离、快速部署与弹性伸缩。这一技术组合的价值在于能够显著提升系统的稳定性和运维效率,尤其适用于需要处理并发请求、保障服务连续性的生产环境。在AI应用领域,随着大语言模型与Agent技术的普及,如何将本地运行的AI Demo转化为稳定、可靠的生产服务,成为工程落地的关键挑战。常见的痛点包括服务单点故障、资源争抢以及复杂的部署运维。本文聚焦于利用

weixin_34221773的博客 371

Redis的哨兵模式的主从关系连接不成功

Redis的哨兵模式的主从关系连接不成功,但是找不到原因,就用&gt;info replication查看了主从配置的信息 master的配置信息如下: 192.168.1.102:6380&gt; info replication # Replication role:masterconnected_slaves:0 ==》没有连接上任何的slaves连接上该master master_re...

SHINE的博客 1万+

验证redis的主从复制

1.1 修改配置文件         [root@ractdg3 redis-2.8.4]# cp redis.conf redis_master.conf         [root@ractdg3 redis-2.8.4]# cp redis.conf redis_slave.conf         [root@ractdg3 redis-2.8.4]# vi redis_slave

好记忆也需烂博客 7823

redis搭建一主两从三哨兵,报错 Master is currently unabNOMASTERLINK Can‘t SYNC while not connected with my master

redis master和两个slave都是报下面的错误 89277:S 16 Dec 2021 12:49:30.640 * Connecting to MASTER 10.38.150.39:6779 89277:S 16 Dec 2021 12:49:30.640 * MASTER <-> REPLICA sync started 89277:S 16 Dec 2021 12:49:30.640 * Non blocking connect for SYNC fired the even

weixin_41267342的博客 5011

redis详解

工作原理 事件模型 redis以其高性能而闻名,它最大程度地利用了 单线程,非阻塞,多路复用的I/O模型 来快速地处理请求。 通信协议 Redis基本上就是一个接受并处理来自客户端请求的非阻塞、I/O复用的TCP服务器。我们可以使用各种编程语言通过TCP协议与Redis进行通信。对Redis来说,这种通信协议叫做Redis Serialization Protocal(RESP,Redis序列...

YABAJ的专栏 1941

docker 实现redis集群搭建

原文地址:https://www.cnblogs.com/cxbhakim/p/9151720.html 摘要:接触docker以来,似乎养成了一种习惯,安装什么应用软件都想往docker方向做,今天就想来尝试下使用docker搭建redis集群。 首先,我们需要理论知识:Redis Cluster是Redis的分布式解决方案,它解决了redis单机中心化的问题,分布式数据库——首要解决把整个数据...

caogenwangbaoqiang的博客 1253
上一篇: Redis 简单HA方案小结
下一篇: 跨域post请求实现方案小结
doraeimo
博客等级 码龄20年 11粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值