Redis:内存陡增100%深度复盘

简介: cascsa

事故回溯总结一句话:

(1)因为大KEY调用量,随着白天自然流量趋势增长而增长,最终在业务高峰最高点期占满带宽使用100%。

(2)从而引发redis的内存使用率,在5min之内从0%->100%。

(3)最终全面GET SET timeout崩溃(11点22分02秒)。

(4)最终导致页面返回timeout。

未解之谜

疑问点:内存使用率100% 就等同于redis不可用吗?

解答:正常使用情况下,不是。

redis有【缓存淘汰机制】,Redis 在内存使用率达到 100% 时不会直接崩溃。相反,它依赖内存淘汰策略来释放内存,确保系统的稳定性。

学习更多:24 替换策略:缓存满了怎么办?

https://time.geekbang.org/column/article/294640

这个配置在哪里?

大部分同学都是不会主动去调整这里的参数的。

因此大概率默认的是:volatile-lru

  • 行为: 使用 LRU(Least Recently Used,最近最少使用)算法驱逐键。volatile-lru 仅驱逐设有过期时间的键,allkeys-lru 则驱逐所有键。
  • 适用场景: 缓存场景,不介意丢失一些数据。

确保你根据实际需求配置适当的内存淘汰策略,以便在内存达到上限时,系统能够稳定地处理新请求,而不会出现写操作失败的情况(只要不是noeviction)。

也就是说,照理SET GET都应该没啥问题才对(先不考虑其他复杂命令)。

  • 尽管 Redis 本身不会轻易崩溃,但如果内存耗尽且没有淘汰策略或者淘汰策略未能生效,Redis 可能拒绝新的写操作,并返回错误:OOM command not allowed when used memory > 'maxmemory'
  • 如果系统的配置或者操作系统的内存管理不当,可能会导致 Redis 进程被操作系统杀死。
相关文章
|
1月前
|
缓存 负载均衡 安全
Nginx 反向代理:原理、优势与配置指南
Nginx反向代理是核心服务器架构技术,可实现请求转发、负载均衡、高可用与安全防护。它隐藏后端服务器,自动剔除故障节点,并支持SSL终止、缓存等高级功能,配置简洁灵活,广泛应用于高性能Web系统。
318 13
|
存储 数据采集 数据处理
【数据结构进阶】位图
位图是一种高效的数据结构,通过二进制的0和1表示数据的存在状态,适用于海量数据的压缩存储与快速检索。本文从概念、实现到应用场景全面解析位图。核心思想是将数据映射到位图的比特位,利用位运算实现O(1)时间复杂度的增删查操作。文章通过C++代码示例展示了位图的三大接口(set、unset、test)实现,并对比自定义位图与标准库`bitset`的异同。位图优点在于极高的时间和空间效率,但仅适用于整型数据。它为布隆过滤器等高级结构奠定了基础,在数据处理领域具有重要价值。
855 1
|
存储 SQL 数据库
性能调优:优化 GROUP BY——使用索引字段分组减少临时文件生成
性能调优:优化 GROUP BY——使用索引字段分组减少临时文件生成
1053 1
|
数据库连接 PHP
深入PHP内核:理解Zend Engine和PHP生命周期
【5月更文挑战第4天】 在本文中,我们将探讨PHP的核心——Zend Engine。我们会详细解释Zend Engine的工作原理,以及它如何驱动PHP代码的执行。此外,我们还将深入讨论PHP生命周期的各个阶段,包括从请求开始到输出结果的整个过程。这篇文章将为你提供一个深入的理解,关于PHP如何处理你的代码,以及它在背后是如何运作的。
392 3
|
算法 搜索推荐 Shell
form-data 与 x-www-form-urlencode有何区别?
在客户端和服务器之间传递数据既可以使用`form-data` ,又可以使用 `x-www-form-urlencoded` 。但是在使用时你有注意它们的区别吗?
679 2
Trying to access array offset on value of type null
你就可以避免在null值上尝试访问数组偏移量的错误。 总的来说,当你遇到这个错误时,你应该回顾你的代码,确保在尝试访问数组偏移量之前,相关的变量已经被正确地初始化为一个数组,并且不是null。
3496 4
|
域名解析 缓存 安全
cdn服务器连接异常怎么办
当遇到CDN服务器连接异常时,可采取以下步骤排查:检查CDN配置,包括域名解析和防火墙设置;清空CDN缓存;测试网络连接;确认源服务器状态;更换CDN服务器;等待恢复;联系服务商;检查本地电脑安全;检查程序代码;保持更新和维护。具体解决步骤需根据实际情况调整。
3284 0
|
Cloud Native 程序员 Go
一文入门Go云原生微服务「爆肝6千字」二
一文入门Go云原生微服务「爆肝6千字」二
317 1
|
存储 关系型数据库 MySQL
MySQL分区表:万字详解与实践指南
MySQL分区表:万字详解与实践指南