缓存雪崩过程原因与解决方案

缓存雪崩就是指缓存由于某些原因,例如宕机、Cache服务挂了偶不响应,导致大量请求到达后端数据库,从而导致数据库崩溃,整个系统奔溃发生灾难
下面就是一个雪崩的过程:
1、redis集群彻底奔溃
2、缓存服务大量对redis的请求hang住,占用资源
3、缓存服务大量请求打到源头服务查询MySQL,直接打死MySQL
4、源头服务因为MySQL被打死也崩溃了,对原服务的请求也hang住,占用资源
5、缓存服务大量的资源全部耗费在访问redis和源服务无果,最后自己也被拖死,无法提供服务
6、Nginx无法访问缓存服务,redis和源服务,只能基于本地缓存提供服务,但是缓存期过后,没有数据提供服务
7、网站崩溃

原因:
1、缓存并发,缓存穿透,缓存颠簸等问题,这些问题也可能会被恶意攻击者所利用
2、例如某个时间点内,系统预加载的缓存周期性集中失效,解决方法:通过设置不同的过期时间,来错开缓存过期,从而避免缓存集中失效

解决方案
1、采用加锁计数,或者使用合理的队列数量来避免缓存失效时对数据库造成太大的压力。这种方法虽然能缓解数据库压力,但是同时又降低了系统的吞吐量
2、分析用户行为,尽量让失效时间均匀分布。避免缓存雪崩的出现
3、如果是因为某台缓存服务器宕机,可以考虑做主备,比如:redis主备,但是双缓存涉及到更新事务的问题,update可能读到脏数据,需要好好解决

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值