首页/数据/Redis 进阶速查/内存告警阈值设计
内存与管理99 条

内存告警阈值设计

常用警戒线:用量持续超过上限的一定比例、淘汰速率持续为正、碎片率越过经验值、RSS 接近容器限额;阈值要按角色区分主从。

Redis 进阶速查数据更新于 2026-10-13

内存告警阈值的分层设计

内存告警要分两层:水位类指标(用量占上限的比例、RSS 与容器限额的距离)反映趋势,活动类指标(淘汰速率、过期速率、碎片率)反映此刻正在发生什么,只看其中一类必然误判。阈值还必须按角色与用途区分:主库与副本的余量需求不同,缓存型与存储型实例的安全水位也不一样,直接套用别处模板会同时出现误报和漏报。告警触发后的第一步是取证与降级观察,而不是立刻重启或清库。

基本信息

水位类used_memory 与 maxmemory 的比值
系统类RSS 与容器限额的差值
活动类evicted_keys、expired_keys 速率
质量类mem_fragmentation_ratio
区分维度主从角色、缓存或存储用途
数据来源INFO memory 与 INFO stats

典型使用场景

  • 为新建实例设计内存告警规则,避免照搬其他业务模板
  • 内存长期高位但无淘汰,判断是否需要提前扩容
  • 淘汰速率持续为正,说明容量已经不够,需要提前介入
  • 区分主库与副本的告警口径,减少无效告警
  • 复盘一次内存事故,核对当时的告警是否覆盖了真实信号
  • 为容器化实例增加 RSS 与限额差值的专项告警

取证命令

取证命令
redis-cli INFO memory | grep -E 'used_memory:|maxmemory:'
redis-cli INFO memory | grep -E 'mem_fragmentation_ratio'
redis-cli INFO stats | grep -E 'evicted_keys|expired_keys'
redis-cli INFO clients                          # 客户端缓冲是否异常
redis-cli INFO replication | grep -E 'role|master_link'
free -m && cat /sys/fs/cgroup/memory.current     # 系统与容器侧

告警项设计对照

监控项阈值思路常见误报
水位占比按上限比例分多级未按角色区分
淘汰速率持续为正即关注短时淘汰被当成故障
碎片率超过经验值做提示忽略 fork 期间波动
RSS 与限额差值按容器余量设置容器参数变化未同步
阈值触发后先取证、降级观察,再决定动作,避免人工恐慌操作引入新问题。
只有总量告警、没有活动告警时,趋势恶化期完全看不到信号,等报出来往往已经没有缓冲时间。

易错点

  • 沿用别的实例模板不改比例与角色,多类实例同时误报或集体漏报
  • 只有总量告警没有活动告警,恶化期无法提前介入
  • 告警一堆人却没人定义处置动作,反复触发后逐渐被忽略
  • 只告警 curated 内存不监控 RSS,容器 OOM 前没有任何征兆
  • 阈值长期不随容量调整,扩容后水位口径失真

数据来源与参考

  • Redis 官方文档:运维告警实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌