实战一:内存硬限制与 OOM Killer(终极整合版)

文章目录

  • 实战一:内存硬限制与 OOM Killer(终极整合版)
    • 一、实验拓扑与参数说明
    • 二、一键启动 Redis(启用 DEBUG 命令)
    • 三、验证环境就绪
    • 四、监控窗口(开 2 个终端)
      • 终端 1:实时监控内存
      • 终端 2:实时监控 OOM 日志
    • 五、内存压测(三种方案任选其一)
      • ✅ 方案一:DEBUG POPULATE(最推荐,最快)
      • ✅ 方案二:Lua 脚本(兼容性最好,无需 DEBUG)
      • ✅ 方案三:redis-benchmark(最接近真实流量)
    • 六、验证 OOM Killer 生效
      • 1️⃣ 容器状态
      • 2️⃣ 确认 OOM 标志
      • 3️⃣ 内核日志证据
    • 七、关键原理解析(面试常问)
      • Q1:为什么 Redis 配置了 `maxmemory 80mb`,却吃了 150MB?
      • Q2:为什么是 Exit Code 137?
      • Q3:Swap 在这里起什么作用?
    • 八、生产环境最佳实践配置
    • 九、故障排查速查表
    • 十、扩展实验(进阶)
      • 实验 A:禁止 Swap(更严格)
      • 实验 B:关闭 OOM Killer(观察卡死)
    • 十一、一键自动化脚本(复制即用)
    • ✅ 总结一句话

实战一:内存硬限制与 OOM Killer(终极整合版)

镜像redis:7.2-alpine
核心原理:Cgroup 内存限制 + Redis 主动申请内存 → 触发内核 OOM Killer
适用场景:理解容器内存限制、OOM 机制、Redis 内存溢出行为


一、实验拓扑与参数说明

参数说明
物理内存上限100M-m 100m
Swap 上限50M--memory-swap 150m
总虚拟内存150M物理 + Swap
Redis maxmemory80M预留系统开销
OOM Killer启用