全链路压测必须覆盖集中过期、缓存重建竞争、降级生效、多级缓存协同等真实雪崩场景,否则无法暴露系统瓶颈。

大促前不做全链路压测,等于把雪崩风险直接交给流量决定。压测不是跑个 redis-benchmark 就完事,关键得模拟真实缓存失效模式、并发重建逻辑和下游兜底能力——否则你永远不知道雪崩会在哪一秒发生。
压测必须覆盖“集中过期”场景
真实雪崩往往不是随机发生的,而是由统一 TTL 触发的批量穿透。只压“热 key 命中”或“单 key 重建”,根本暴露不出问题。
- 不要用固定
EXPIRE时间:所有缓存 key 必须按业务批次设置相同基础 TTL(比如商品详情统一设为 30 分钟),再在压测脚本里强制对这批 key 批量EXPIREAT到同一秒级时间戳 - 压测启动时机要卡点:在过期时间前 5 秒发起第一波请求,观察 Redis
keyspace_misses是否突增、数据库 QPS 是否同步飙升 - 监控重点看
INFO stats中的expired_keys和evicted_keys是否在过期窗口内出现尖峰,这两个值同时暴涨是雪崩前兆
必须验证“缓存重建”是否串行或竞争失控
很多团队以为加了分布式锁就安全了,但没压测过锁粒度、等待超时和降级触发条件,高并发下锁本身就会成为瓶颈。
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
- 用
SET key value EX 30 NX模拟重建锁时,压测并发数要 ≥ 1000,观察 Redisused_cpu_sys是否持续 > 80%,这是锁竞争导致 CPU 打满的信号 - 检查业务日志里是否有大量
Lock wait timeout或tryLock failed,这类日志一旦每秒超过 50 条,说明锁已成性能瓶颈 - 必须验证降级逻辑是否真能生效:在压测中手动
DEL一批热点 key 后,立刻停掉数据库服务,确认接口是否返回预设降级值(如{"code":200,"data":null}),而不是直接报 500
必须验证多级缓存与熔断组件的真实协同
本地缓存(如 Caffeine)和熔断器(如 Sentinel)不是摆设,它们要在 Redis 不可用时真正扛住第一波冲击。
- 压测中用
iptables -A OUTPUT -p tcp --dport 6379 -j DROP模拟 Redis 全链路不可用,观察本地缓存命中率是否 > 95%,且接口 P99 延迟是否稳定在 20ms 内 - 触发 Sentinel 熔断后,检查
sentinel.blocked_requests指标是否开始计数,同时确认数据库连接池active_count是否不再增长 - 特别注意异步预热任务:压测期间手动触发一次全量预热,观察 Redis
used_memory_peak_human是否在 2 分钟内陡升,避免预热本身打爆内存
最容易被忽略的是“缓存重建失败后的空窗期”——压测时故意让数据库查询返回空或超时,看业务代码会不会把 null 写进缓存、会不会重试无限循环、会不会漏掉布隆过滤器更新。这些细节不暴露在日志里,只藏在慢查询和连接池堆积中。










