wordpress免费搭建博客,保山网站建设优化,天元建设集团有限公司枣庄,怎样注册个人网站事故背景公司最近安排了一波商品抢购活动#xff0c;由于后台小哥操作失误最终导致活动效果差#xff0c;被用户和代理商投诉了。老板让我带同事们一起复盘这次线上事故。什么原因造成的#xff1f;抢购活动计划是零点准时开始#xff0c;22#xff1a;00 运营人员通过后台… 事故背景公司最近安排了一波商品抢购活动由于后台小哥操作失误最终导致活动效果差被用户和代理商投诉了。老板让我带同事们一起复盘这次线上事故。什么原因造成的抢购活动计划是零点准时开始2200 运营人员通过后台将商品上线2300后台小哥已经将商品导入缓存中提前预热抢购开始的瞬间流量非常大按计划是通过Redis承担大部分用户查询请求避免请求全部落在数据库上。缓存命中如上图预期大部分请求会命中缓存但是由于后台小哥预热缓存的时候将所有商品的缓存时间都设置为2小时过期所有的商品在同一个时间点全部失效瞬间所有的请求都落在数据库上导致数据库扛不住压力崩溃用户所有的请求都超时报错。实际上所有的请求都直接落到数据库如下图缓存雪崩什么时候发现的凌晨01:02 SRE 收到系统告警登录运维管理系统发现数据库节点 CPU和内存飙升超过阈值迅速联系后台开发人员定位排查。为什么没有早点发现由于缓存设置过期时间是2小时凌晨1点前缓存可以命中大部分请求数据库服务处于正常状态。发现时采取了什么措施后台小哥通过日志定位排查发现问题后进行了一系列操作首先通过API Gateway网关限制大部分流量进来 接着将宕机的数据库服务重启 再重新预热缓存 确认缓存和数据库服务正常后将网关流量正常放开大约0130 抢购活动恢复正常。如何避免下次出现这次事故的原因其实就是出现了缓存雪崩查询数据量巨大请求直接落到数据库上引起数据库压力过大宕机。在业界解决缓存雪崩的方法其实比较成熟了比如有均匀过期加互斥锁缓存永不过期1均匀过期设置不同的过期时间让缓存失效的时间点尽量均匀。通常可以为有效期增加随机值或者统一规划有效期。缓存key过期时间均匀分布2加互斥锁跟缓存击穿解决思路一致同一时间只让一个线程构建缓存其他线程阻塞排队。互斥访问3缓存永不过期跟缓存击穿解决思路一致缓存在物理上永远不过期用一个异步的线程更新缓存。异步更新缓存复盘总结通过与同事复盘这次线上事故大家对于缓存雪崩有了更深刻的理解。为了避免再次出现缓存雪崩事故大家一起讨论了多个解决方案1均匀过期2加互斥锁3缓存永不过期希望技术人能够敬畏每一行代码
往期推荐
《大厂内部资料》Redis 性能优化的 13 条军规全网首发2020-03-24 惊呆了竟然可以用这种方式秒建Redis集群2020-03-26 史上最全的 SQL 优化方案建议收藏2020-04-13 关注我每天陪你进步一点点