redis 缓存雪崩

缓存的含义是用redis 作为应用服务器的缓存中间件,即缓存就是redis

数据库服务器崩溃(1)

  • 雪崩过程
  1. 系统平稳运行过程中, 突然数据库连接量激增
  2. 应用服务器无法及时处理请求
  3. 大量408,500错误页面出现
  4. 客户反复刷新页面获取数据
  5. 数据库崩溃
  6. 应用服务器崩溃
  7. 重启应用服务器无效
  8. redis服务器崩溃
  9. redis 集群崩溃
  10. 重启数据库后再次被瞬间流量放倒
  • 问题排查
  1. 在一个较短时间内,缓存中较多的key 集中过期
  2. 此周期内请求访问过期的数据,redis 未命中,redis 向数据库获取数据
  3. 数据库同时接收到大量的请求无法及时处理
  4. redis 大量请求被积压,开始出现超时现象
  5. 数据库流量激增,数据库崩溃
  6. 重启后仍然面对缓存中无数据可用
  7. redis 服务器资源被严重占用,redis 服务器崩溃
  8. redis 集群呈现崩塌,集群瓦解
  9. 应用服务器无法及时得到数据响应请求,来自客户端的请求数量越来越多,应用服务器崩溃
  10. 应用服务器,redis,数据库全部重启,效果不理想

注意:问题排除出的最主要的问题是:短时间内,redis 存储的较多的key集中过期。因此指定的解决方案应该针对这个问题。

解决方案(道)

  1. 更多的页面静态化处理
  2. 构建多级缓存架构—— nginx 缓存 + redis 缓存 + ehcache 缓存
  3. 检测MySQL 严重耗时业务进行优化:对数据库的瓶颈排查,例如超时查询、耗时较高的事务等
  4. 灾难预警机制
    • 监控redis 服务器性能指标
      • CPU 占用、CPU使用率
      • 内存容量
      • 查询平均响应时间
      • 线程数
  5. 限流、降级:短时间范围内牺牲一些客户体验,限制一部分请求访问,降低应用服务器压力,待业务低速运转后在逐步放开访问

解决方案(术)

  1. LRU 与LFU 切换
  2. 数据有效期策略调整
    1. 根据业务数据有效期进行分类错峰,A类90分钟,B类80分钟,C类70分钟
    2. 过期时间使用固定时间+随机值的形式,稀释集中到期的key 的数量
  3. 超热数据使用永久key
  4. 定期维护(自动+人工)
    1. 对即将过期数据做访问量分析,确定是否延时,配合访问量统计,做热点数据的延时
  5. 加锁(慎用!!!)

总结

缓存雪崩就是瞬间过期数据量太大,导致对数据库服务器造成压力。如能够有效避免过期时间集中,可以有效解决雪崩现象的出现(约40%),配合其他策略一起使用,并监控服务器的运行数据,根据运行记录做快速调整。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值