开发者学堂课程【Redis 入门到精通(进阶篇):企业级解决方案-缓存雪崩】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/765/detail/13472
企业级解决方案-缓存雪崩
内容介绍
一、数据库服务器崩溃(1)
二、问题排查
三、问题分析
四、解决方案(道)
五、解决方案(术)
六、总结
一、数据库服务器崩溃(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,数据库全部重启,效果不理想
三、问题分析
短时间范围内
大量 key 集中过期
四、解决方案(道)
1.更多的页面静态化处理
2.构建多级缓存架构
Nginx 缓存+redis 缓存+ehcache 缓存
3.检测 Mysql 严重耗时业务进行优化
对数据库的瓶颈排查:例如超时查询、耗时较高事务等
4.灾难预警机制
监控redis服务器性能指标
CPU 占用、CPU 使用率
内存容量
查询平均响应时间
线程数
5.限流、降级
短时间范围内牺牲一些客户体验,限制一部分请求访问,降低应用服务器压力,待业务低速运转后再逐步放开访问
五、解决方案(术)
1.LRU 与 LFU 切换
2.数据有效期策略调整
根据业务数据有效期进行分类错峰,A类90分钟,B类80分钟,C类70分钟
过期时间使用固定时间+随机值的形式,稀释集中到期的 key 的数量
3.超热数据使用永久 key
4.定期维护(自动+人工)
对即将过期数据做访问量分析,确认是否延时,配合访问量统计,做热点数据的延时
5.加锁
慎用!
六、总结
缓存雪崩就是瞬间过期数据量太大,导致对数据库服务器造成压力。如能够有效避免过期时间集中,可以有效解决雪崩现象的出现(约40%),配合其他策略一起使用,并监控服务器的运行数据,根据运行记录做快速调整。