数据库与存储 · 进阶

Redis 内存压力与延迟处置

区分 maxmemory、进程 RSS、复制与 AOF 缓冲,结合有界采样、慢日志和业务指标定位 Redis 内存压力及延迟。

Redis监控告警高可用

场景目标

通过固定观察窗口与有界只读采样,区分数据增长、进程开销、复制持久化压力和客户端延迟,形成可复核的根因假设、授权处置选项与业务验收记录。

环境要求

需要获批 Redis 7.x/8.x 实例、实际分片与角色映射、最小诊断 ACL 和 TLS/受保护凭据,以及已有业务与主机监控。托管服务或兼容实现按其版本复核命令权限;不新增采集器、不执行生产压测。90 分钟估时仅覆盖一次已具备观测条件的诊断窗口,不含容量迁移、持久化修复和完整高峰验收。

参考架构 · 非实时拓扑

Redis 内存、持久化与端到端延迟诊断架构

将客户端等待、Redis 执行、驱逐与 RSS 余量以及复制持久化开销分层对照,以限定采样提出最小处置;缓存场景还需观察回源压力。

  • 数据 / 请求
  • 控制 / 管理
  • 观测 / 查询

点击组件,在图下方查看职责;连线编号对应流向解读。小屏可横向滚动,或直接展开文字说明。

Redis 内存、持久化与端到端延迟诊断架构:组件关系图将客户端等待、Redis 执行、驱逐与 RSS 余量以及复制持久化开销分层对照,以限定采样提出最小处置;缓存场景还需观察回源压力。 业务客户端 → Redis 实例:批准的业务访问;业务客户端 → 已有业务后端:未命中回源;Redis 实例 → 复制 / 持久化:既有复制或落盘;内存与驱逐约束 → Redis 实例:限额与驱逐约束;Redis 实例 → 既有监控与采样:指标与采样响应;业务客户端 → 既有监控与采样:端到端请求基线;复制 / 持久化 → 既有监控与采样:复制与存储事件;既有监控与采样 → 处置评审与验收:假设与反证;处置评审与验收 → 内存与驱逐约束:获批措施评审。箭头说明见下方流向解读。
Redis 7.x/8.x 逻辑诊断参考图;回源支路仅适用于缓存用途,持久化和复制按现有部署确认,不表示已压测或优化。

业务客户端

入口 / 来源

确认真实实例、分片和业务用途,将连接等待、网络、重试与服务端执行时间分开。

全部组件职责 7 个组件
业务客户端
确认真实实例、分片和业务用途,将连接等待、网络、重试与服务端执行时间分开。
Redis 实例
只读获取获准的 INFO、有限慢日志和已知键元数据;不执行全量扫描、删除或切换。工具介绍 Redis 实例
已有业务后端
仅在 Redis 用作缓存且应用已有此逻辑时适用,观察驱逐或命中下降对后端的额外压力。
既有监控与采样
复用已有指标并补充有界授权采样,空字段和未启用延迟监测不能伪装成正常零值。工具介绍 既有监控与采样
内存与驱逐约束
maxmemory 不是进程或容器内存上限,分别核算复制/AOF 缓冲、碎片与 COW 余量。
复制 / 持久化
核对副本同步、后台保存和 AOF 重写的既有事件,完整保护多部分 AOF,不为诊断主动触发重写。工具介绍 复制 / 持久化
处置评审与验收
依据反证选择上游限流、数据模型、容量或存储责任路径,实际变更须另行批准并记录原值。
流向解读 9 条连接
  1. 1

    业务客户端 Redis 实例

    数据 / 请求 · 批准的业务访问

    表示应用原有读写,不通过额外生产负载或无界查询重现故障。

  2. 2

    业务客户端 已有业务后端

    数据 / 请求 · 未命中回源

    仅为已存在的缓存回源路径示意,Redis 若存储不可丢弃状态则此支路不适用。

  3. 3

    Redis 实例 复制 / 持久化

    数据 / 请求 · 既有复制或落盘

    具体 RDB、AOF 或复制由现场确认,不默认全部开启。

  4. 4

    内存与驱逐约束 Redis 实例

    控制 / 管理 · 限额与驱逐约束

    不同策略的候选键与写入错误行为不同,图示规则影响而不是自动修改配置。

  5. 5

    Redis 实例 既有监控与采样

    观测 / 查询 · 指标与采样响应

    获准诊断身份主动读取有限 INFO 与慢日志,Redis 返回采样结果;敏感参数脱敏,频率与范围有预算。

  6. 6

    业务客户端 既有监控与采样

    观测 / 查询 · 端到端请求基线

    客户端延迟与服务端慢日志覆盖范围不同,不能仅凭慢日志为空否定业务延迟。

  7. 7

    复制 / 持久化 既有监控与采样

    观测 / 查询 · 复制与存储事件

    对照既有磁盘、fork/COW、复制和持久化时间线定位相关性。

  8. 8

    既有监控与采样 处置评审与验收

    观测 / 查询 · 假设与反证

    同时考虑业务延迟、错误、命中、后端压力与容器余量,不只追求 used_memory 下降。

  9. 9

    处置评审与验收 内存与驱逐约束

    控制 / 管理 · 获批措施评审

    记录候选原值、配置来源、不可逆影响与停止阈值;本方案不直接调整实例。

从架构到实施

  1. 01

    确认真实实例和内存口径

    限定业务、实例与采样预算,建立 INFO 基线后区分驱逐阈值、TTL、RSS 和容器余量。

  2. 02

    沿事件时间线拆解延迟

    对照复制持久化、有限慢日志和已知键样本,用证据排除连接池、网络或存储干扰。

  3. 03

    用业务窗口审阅处置结果

    提出单项最小措施并明确不可逆部分,实际验收同时覆盖延迟、错误、命中和后端压力。

故障域与操作边界

改回策略不能恢复已驱逐键

驱逐、TTL 到期与显式删除是不同事件;任何可能丢数据的处置都先确认用途和恢复来源。

内存压力下不要叠加重任务

不临时发起全量扫描、保存、AOF 重写或故障切换,部分缓冲不参与 maxmemory 驱逐比较。

观察范围不等于性能承诺

未覆盖高峰、措施未实施或根因未确认时保持待验证,实测结论不外推到全部分片和负载。

架构依据与版本核对 1 篇官方资料

图解是本站基于官方资料整理的逻辑参考;实施前仍需核对实际部署版本、组件支持范围与变更审批。

方案说明

适用范围

用于 Redis 7.x/8.x 内存告警、OOM 写入错误和 p99 延迟升高的诊断与处置评审。先确认实际实例、角色、数据库及分片,latest 官方文档中的新字段不默认适用于现有部署。Sentinel 切换与容量治理分别处理。

安全边界与当前状态

本场景是待验证内容(PENDING),不执行文中命令,不宣称完成压测或性能优化。仅使用已授权身份读取必要信息;慢日志可能包含敏感参数,应脱敏。禁止 KEYS *、FLUSHALL、无条件 CONFIG SET、全量扫描和通配符删除;配置、限流、扩容、删除及切换均需独立批准。

全局验收

同时观察业务延迟、错误、命中率、后端压力、RSS/容器余量、驱逐及复制持久化趋势。maxmemory 不是操作系统内存上限,部分复制与 AOF 缓冲不参与驱逐比较;LRU 驱逐不等于 TTL 到期,也不能释放所有进程开销。改回旧策略不能恢复已驱逐键。

配套内容

官方参考

工具编排

3 个关联工具
  1. Redis内存与命令证据提供实例身份、内存口径、复制持久化和有界慢日志,诊断不修改数据或运行配置。
  2. Prometheus业务与资源趋势复用已有采集查看错误、延迟、RSS 与驱逐趋势,字段和标签按实际采集版本核对。
  3. Grafana跨层时间轴把业务、实例、容器和持久化事件放在同一观察窗口,保留脱敏对照证据。

实施步骤

共 8 步
  1. 01

    限定实例、业务影响和采样预算

    登记告警窗口、业务 p95/p99、超时、重试和连接池等待,关联近期发布及写入变化。将代理或 Sentinel 入口映射到真实节点;Cluster 按受影响分片独立采样。先批准实例、数据库、诊断身份和频率,凭据从受保护渠道注入,禁止写入 URL 或命令参数。

    验证标准

    目标实例、角色、版本与业务对应关系明确,采样负责人和停止阈值完整;缺少业务观测时注明覆盖缺口,不以 PING 正常否认用户超时。

    停止与回退

    本步无数据变更;目标不明或权限不足时不发起后续查询,修正资产映射与批准范围。不临时提升管理员权限或切换节点来获取更完整输出。

    返回步骤起点
  2. 02

    建立内存和错误基线

    在已核对身份的交互连接中只读采样以下段落,采样结束断开额外连接。先记录基线,再按批准间隔复查;命令示例不由本站执行。latest 文档中部署版本不存在的字段记为缺失,不填零。

    INFO server
    INFO memory
    INFO stats
    验证标准

    记录版本、采样时间、used_memory、used_memory_rss、maxmemory、策略和错误/驱逐计数,与容器限制及业务窗口对应。比较累计计数时排除重启和监控缺口,不只看多实例平均值。

    停止与回退

    查询或输出处理增加业务压力即停止后续采样,保存必要脱敏摘要。只读基线无需数据回退,不清空统计计数或日志以制造新起点。

    返回步骤起点
  3. 03

    区分驱逐策略与 RSS 风险

    核对 maxmemory 相关限额、数据用途、TTL 生命周期和 mem_not_counted_for_evict。区分近似 LRU、TTL 到期和 noeviction;volatile-lru 仅有带 TTL 的候选键。复制与 AOF 部分缓冲不参加驱逐比较,RSS 和容器余量需要单独预算;碎片判断同时看绝对字节与分配器指标。

    验证标准

    能够解释数据集增长、缓冲增长或 RSS 开销哪一项支持当前假设;明确哪些键允许丢失。maxmemory 未触顶不能排除 OS OOM,高碎片比值也不能单独作为根因。

    停止与回退

    不在诊断中更换驱逐策略或提高额度。若数据丢失风险超出业务约定,停止处置建议并升级审批;改回配置无法恢复已被驱逐的数据。

    返回步骤起点
  4. 04

    关联持久化和复制事件

    只读核对后台保存/重写、最近成功状态、复制角色与链路,再与已有磁盘和 COW/fork 监控对齐。Redis 7 起的多部分 AOF 要作为完整集合保护,不能删除某个大文件。内存危急时不临时触发新的保存、AOF 重写或故障切换。

    INFO persistence
    INFO replication
    验证标准

    有同时间窗的持久化、磁盘和复制证据,异常与写入变化能够关联;字段缺失和监控未启用分别记录。复制正常不等于 AOF 安全,后台任务成功也不等于延迟恢复。

    停止与回退

    出现持久化失败、数据风险或持续重启时转入事故流程并停止额外诊断负载。不关闭持久化、不删除 AOF/RDB、不切到未核验副本,不通过重启掩盖根因。

    返回步骤起点
  5. 05

    读取有限慢日志并拆分延迟

    获批读取敏感命令元数据后,最多读取十条慢日志及已有延迟事件;仅保留脱敏键模式与耗时,不公开命令实参。将客户端连接池等待、网络与服务端执行拆开,慢日志不覆盖整个请求路径。未启用延迟监控时空结果不是没有延迟,不自动改阈值。

    SLOWLOG GET 10
    LATENCY LATEST
    验证标准

    每条证据带时间、实例和覆盖范围,慢日志样本与业务高延迟窗口可比;存在网络或排队假设时明确后续验证路径,不根据空慢日志结论排除 Redis 链路。

    停止与回退

    如权限或脱敏无法保证,停止读取并删除获准临时副本中的敏感输出,保留脱敏事实。禁止长期 MONITOR、重置慢日志或通过生产压测重现异常。

    返回步骤起点
  6. 06

    使用已知键和有界样本定位

    优先使用应用负责人给出的精确键,以下不读取键值。MEMORY USAGE 的采样结果对嵌套对象是估计;TTL -1 为无过期,-2 为不存在。确需 SCAN 时另批前缀、数据库与实例,上限建议五次调用、每秒一次、累计十秒,任一达到即停;COUNT 只是提示,不是硬返回上限。

    TYPE APPROVED_SAMPLE_KEY
    TTL APPROVED_SAMPLE_KEY
    MEMORY USAGE APPROVED_SAMPLE_KEY SAMPLES 5
    验证标准

    记录样本选择、键类型、TTL 与估计大小,标注部分扫描不代表全库快照。扫描可能空结果但游标未结束、可能重复;不能据此给出全库对象总量或删除清单。

    停止与回退

    一旦 CPU、p99 或超时恶化,停止后续调用并交接已有证据。不使用 KEYS *、FLUSHALL、无界扫描或通配符删除,采样结束无需回退键内容。

    返回步骤起点
  7. 07

    评审最小处置与不可逆影响

    根据证据提出单项变更:异常写入可评审上游限流;对象增长可评审数据结构与 TTL;不可丢弃状态可评审独立用途或容量迁移;存储/复制压力转交对应责任人。每项动作记录目标、原值、配置来源、预期信号、停止条件和负责人;不直接执行 CONFIG SET、删除键、扩容或角色切换。

    验证标准

    处置与根因证据相符,宿主机及副本容量、持久化峰值和业务数据语义已评审。未经授权不执行;有授权后也只推进已批准的最小范围,不并行改变多项条件使因果不可辨。

    停止与回退

    已批准变更若恶化则停止扩批,按原值及配置来源恢复允许回退的部分。已驱逐键、删除数据和新写入不随配置回退恢复,需要业务重建或另行数据恢复审批。

    返回步骤起点
  8. 08

    完成业务窗口验收与值班交接

    在批准的实际负载窗口对照 p95/p99、超时、错误、命中率、后端数据库压力、RSS 余量、驱逐趋势和复制持久化状态。归档采样、假设与反证、审批、实际动作、回退限制和剩余风险;高峰未覆盖、措施未执行或根因未确认时持续标记 PENDING。

    验证标准

    业务与资源均有实测结果、窗口和验收人,短暂下降或单次 PING 不作为结案条件;容量、数据重建和后续复查各有负责人。原始敏感输出未进入公开站点。

    停止与回退

    未通过则保持事件或变更待验收,重新评估根因和容量;不反复重试原动作。需要扩大范围、迁移或改变持久化策略时重新申请授权,不能以继续优化为由扩大权限。

    返回步骤起点

DOUYA OPS ECOSYSTEM

体验豆芽自研工具与场景能力

部分场景提供体验环境,用于功能验证、测试和技术交流。