暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Redis内存溢出故障排查

IT那活儿 2025-04-25
157

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!


问题现象

数据中台前端查询模块出现页面卡顿无响应的现象,经过排查发现是Redis出现故障,查询对应的日志文件,发现出现内存溢出问题Redis日志中出现OOM command not allowed when used memory > 'maxmemory' 错误,提示内存超过配置的最大限制

官方文档中描述当出现内存溢出时Redis无法继续响应客户端请求:


原因分析

经排查,导致Redis内存溢出问题的原因主要是配置不规范,具体分析如下:

2.1 缺少内存限制配置 (maxmemory)

Redis没有设置maxmemory配置项,导致其使用的内存没有上限限制。随着数据量的增加,Redis会无限制地占用内存,最终超出系统物理内存。

2.2 没有配置内存淘汰策略 (maxmemory-policy)
Redis没有配置内存淘汰策略。若 Redis内存达到上限,默认情况下不会自动清理过期键,导致内存一直累积,最终引发OOM 错误。
2.3 缺少监控和预警机制
在出现内存占用过多时,缺乏实时的监控和预警机制,无法及时发现问题,导致内存溢出发生。
2.4 过期数据没有清理
Redis中存储了大量过期且不再需要的数据,未定期清理过期数据,导致内存一直占用。

解决方法

针对Redis内存溢出问题,采取了以下解决措施:

3.1 配置最大内存限制 (maxmemory)

在Redis配置文件中配置了最大内存限制,防止Redis占用过多内存。我们将内存限制为4GB。

3.2 配置内存淘汰策略 (maxmemory-policy)
配置maxmemory-policy参数,采用 allkeys-lru策略,使Redis在内存超限时能够自动淘汰最不常用的键。
3.3 增加监控和预警机制
配置Redis内存使用监控,并设置了预警通知机制,当Redis 使用超过一定百分比时,自动触发报警通知。
3.4 清理过期数据
为业务逻辑增加了定期清理过期数据的功能,避免无效缓存占用过多内存。
3.5 调整操作系统内存管理
设置vm.overcommit_memory为1,避免Redis内存超限时被操作系统终止。
3.6 扩展Redis内存资源
根据实际业务需求,增加服务器的内存资源,以保证 Redis 可以处理更多的数据,同时考虑将Redis部署为集群模式,进一步扩展容量。

总 结

由于Redis配置不规范,缺乏合理的内存限制和淘汰策略,导致Redis在内存使用超限时无法及时释放内存,最终发生了内存溢出(OOM)错误,严重影响了生产环境的稳定性。

由于当前是单节点部署,后期会根据业务实际情况考虑是否采用集群部署的方式来保障系统的稳定性和连续性。

另外在将开源项目部署到生产环境时,有许多关键事项需要注意。

以下是故障总结和建议的详细描述:

  • 资源配置与性能调优
    生产环境通常面临更高的流量与负载,因此需要合理配置服务器的内存和CPU资源。确保项目的内存使用和CPU占用在可承受的范围内,避免出现内存泄漏或CPU过载。
  • 安全性设置
    部署到生产环境的开源项目往往需要加强安全性。确保启用必要的身份验证机制,并设置适当的访问控制规则。比如,开启数据库或缓存系统的密码验证,配置防火墙限制外部IP的访问等。
  • 版本管理与更新
    部署时,要选择已经经过充分测试并被认为稳定的版本,避免直接将开发中的版本部署到生产环境。确保所有的依赖库或插件都是与当前项目版本兼容的。
  • 日志与监控
    生产环境中,日志是故障排查的关键工具。确保项目能够生成详细的错误日志、访问日志等,记录包括请求的输入、输出、错误信息和执行过程等内容。可以使用集中式日志系统(如ELK Stack)来管理和分析日志。
  • 容灾与备份
    确保所有重要数据都有定期的备份,并且能够在系统发生故障时恢复。对数据库、配置文件和其他关键数据进行定期备份,并保存在安全的位置。
  • 负载均衡与扩展性
    生产环境中的流量可能是动态变化的,因此需要使用负载均衡器来合理分配流量,避免单个节点超载。负载均衡器可以帮助分散请求,提升系统的稳定性和响应速度。
  • 故障恢复和应急响应
    要有明确的故障排查流程,包括常见的日志分析、性能监控指标检查等。通过分析日志、查看数据库状态、检查缓存等方式,快速定位问题。
  • 测试与验证
    在进行正式部署之前,可以通过灰度发布的方式,将部分流量引入新版本中,观察其行为,减少新版本对生产环境的影响。如果发现问题,可以快速回滚。


END


本文作者:周建伟(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论