Redis OOM 问题排查

本文详细介绍了Redis OOM问题导致的服务延迟和硬盘使用率报警,分析了主从切换过程中的超时异常、节点选举时间、异常主从配置以及内存和磁盘波动情况。通过故障排查,揭示了Redis集群在处理故障时的行为和影响,提供了问题的解决方案和参考链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

多个服务同时出现latency SEV2问题,这些服务都依赖远程缓存Redis存储的数据,而且Redis硬盘使用率也出现报警,经过排查发现Redis有4台host停止对外服务,另外其中一个node变成1主11从配置,而非默认的1主4从。

客户影响

  1. 大概有0.1%的traffic在30min超过latency阈值,会导致上游服务部分请求超时。
  2. 一个节点大部分数据丢失,会增加部分访问的latency。

分析&结论

  1. 由于Redis的一台host出现问题,被健康检测系统用新的host(M5)替换,其连接到Master(M1)之后,触发M1的BGSAVE,但M5同步数据失败,不过由于配置原因(replica-serve-stale-data 为true),其仍然可以对外提供服务,不过由于其没有完成数据同步,所以无有效数据可以读取,所以traffic会穿透到Sable,从而导致latency增加。
  2. 同时这些traffic会触发大量写M1操作,引发大量AOF操作,导致内存使用增加,之后被OOM killer杀掉,多次反复此过程,从而导致内存波动,但由于硬盘数据未清理,故硬盘使用量持续增加,之后进行RDB操作,导致硬盘使用量快速增加,引发RDB进程反复重试报错,但这段时间由于没有AOF操作,所以内存并无变化,之后硬盘被服务器清理后,AOF开始工作,内存开始急剧降低,内存过低引发master连接超时。
  3. 由于cluster-node-timeo
Redis是一种高性能的键值对存储系统,广泛应用于缓存、消息队列等领域。尽管其性能优越且易于使用,在实际部署和运维过程中仍可能出现各种各样的问题。以下是Redis常见的一些问题及其简要说明: ### 1. 内存溢出 (Out Of Memory - OOM) #### 现象描述: 由于数据量过大或配置不当导致服务器内存不足,进而引发OOM错误,最终可能导致服务崩溃。 #### 解决方案建议: - 设置最大可用内存量 (`maxmemory`) 并采用合适的淘汰策略; - 定期清理过期的数据项; - 分析业务需求调整合理的key生命周期及大小限制等措施防止无节制增长。 ### 2. 性能瓶颈 #### 表现形式: 随着访问频率增加,响应时间延长甚至达到秒级延迟;CPU占用率过高影响其他进程运行效率。 #### 考虑因素与应对办法: - 对于频繁读写的热点Key优化查询路径降低复杂度; - 使用集群模式分散负载压力平衡资源利用率; - 配置持久化选项(如AOF/RDB)减少不必要的I/O操作次数; ### 3. 数据丢失风险 #### 可能原因: 突然断电、硬件故障等情况使得尚未同步到磁盘的日志文件损坏无法恢复造成部分新插入记录消失不见; 或者主从复制机制下Slave节点跟不上Master更新速度引起数据一致性异常。 #### 应急处理思路: - 合理规划备份计划定期保存快照副本确保意外发生前一刻的状态得以保留以便快速回滚修复; - 加强网络连接稳定性监测及时发现链路中断现象保证实时通讯畅通; - 监控主从之间的偏移差距设定阈值报警提示管理员尽早介入排查解决潜在隐患. 除了上述提到的问题外还有许多其它方面需要注意比如安全漏洞防护(设置密码保护)、兼容性考量等问题都需要我们在日常工作中不断积累经验加以防范改进。 希望这些问题能够帮助你更好地理解和预防可能出现的风险点!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值