温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

缓存雪崩怎样进行应急处理

发布时间:2026-10-15 19:55:09 来源:亿速云 阅读:84 作者:小樊 栏目:系统运维

缓存雪崩是指大量缓存数据在同一时间失效(或缓存服务整体不可用),导致请求瞬间全部打到数据库,从而引发数据库压力骤增甚至宕机的现象。应急处理的核心目标是:快速止血、保护数据库、逐步恢复缓存。

以下是典型的应急处理步骤:


一、立即止血(保数据库)

1. 限流 & 降级

  • 接口限流:使用网关(Nginx / Sentinel / Hystrix)对热点接口限流
  • 熔断降级:非核心接口直接返回默认值 / 静态页 / 错误提示
  • 排队处理:核心请求排队,避免瞬时洪峰

2. 数据库保护

  • 数据库增加最大连接数限制
  • 开启慢查询 kill
  • 对非核心查询临时关闭或缓存空结果

3. 返回兜底数据

  • 返回:
    • 上次缓存快照
    • 静态默认值
    • “系统繁忙,请稍后再试”

二、缓存层应急恢复

4. 手动预热缓存

  • 从数据库批量读取热点数据
  • 提前写入缓存(可脚本/后台任务)
  • 设置不同过期时间(错峰)

5. 临时延长 TTL

  • 对未失效缓存延长过期时间
  • 防止第二批雪崩

6. 缓存空值(防穿透叠加)

key -> null (短过期)

三、架构级临时方案

7. 多级缓存

  • 本地缓存(Caffeine / Guava)
  • 分布式缓存(Redis)
  • 请求先走本地缓存

8. 互斥锁 / 单飞(SingleFlight)

  • 同一 key 只放一个请求查 DB
  • 其他请求等待结果

四、事后优化(防止再发生)

  • ✅ 缓存过期时间加随机值
  • ✅ 热点 key 永不过期 + 异步刷新
  • ✅ Redis 高可用(哨兵 / 集群)
  • ✅ 监控告警(命中率、DB QPS)
  • ✅ 缓存预热机制

应急口诀

先限流,再降级,保数据库;
后预热,错过期,防再崩。

如果你使用的是 Redis + MySQL 或 某具体业务场景,我可以直接给你一套可落地的应急方案。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手