SRE 实践:服务可靠性案例课
白园
前百度资深运维专家,前快手资深 SRE 专家
1377 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 17 讲/共 29 讲
SRE 实践:服务可靠性案例课
15
15
1.0x
00:00/00:00
登录|注册

14|预案场景(一):B站最为深刻的一次自我剖析

你好,我是白园。
今天我们开始进入预案场景故障的分析。这节课我们就来分析一下 B 站 2021 年 7 月 13 日的故障这也是我见过的公司对自身故障剖析得最详细的一次,我们来看看能从中学习到什么内容。

故障回顾

7 月 13 日 23 时许,B 站客户端和网页端均出现访问故障,无法打开,页面提示“正在玩命加载数据”。不久后,“B 站崩了”话题也迅速登上微博热搜。14 日凌晨 B 站网页端和 App 才恢复正常。
22:52 是故障开始的时间,SRE 团队接到了关于服务和域名接入层不可用的多起警报。与此同时,客服部门接到了大量用户反映 B 站无法访问的反馈,公司内部员工也报告了相同的问题,包括 App 首页加载失败。根据报警信息,SRE 团队迅速把注意力集中在可能的基础设施故障上,包括数据中心、网络连接、四层负载均衡器(L4 LB)和七层负载均衡器(L7 SLB)。为了迅速应对,SRE 团队立即启动了紧急语音会议,并召集了所有相关团队的成员进行紧急处理。
故障原因:7 层接入 SLB 代码 Bug
B 站在 2019 年 9 月份,迁移到了 OpenResty,通过服务在注册中心的权重变更,来实现 SLB 的动态调权,从而实现更精细的灰度能力。在某种发布模式中,应用的实例权重会短暂地调整为 0,这个时候注册中心返回给 SLB 的权重是字符串类型的 0。这个时候由于 lua 语言的特性并不会强制转化字符串的 0 为数字 0,程序就会陷入到死循环进而把 worker 打死。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. B站7月13日23时许出现访问故障,SRE团队迅速应对并召集相关团队成员进行紧急处理。 2. 故障原因是应用的实例权重短暂调整为0,导致注册中心返回给SLB的权重是字符串类型的0,进而导致程序陷入死循环。 3. 故障恢复过程历时110分钟,包括SLB新集群的搭建工作和逐步切换流量至新集群。 4. 核心优化点一是双活部署和流量切换,故障时间从178分钟缩短至31分钟。 5. 多活建设中暴露了机房和业务混乱、元信息管理缺失、切流缓慢等问题,需要加强多活建设和逃生策略。 6. 核心优化点二是故障演练的重要性,需要通过反复练习来提升速度。 7. 故障处理中的准备时间和恢复过程暴露了内网鉴权系统和接入层的循环依赖、日常紧急情况的演练和覆盖的缺失等问题。 8. 故障处理中的有效止损动作包括登录内网、无效尝试重启、服务搭建和服务切流,帮助缩短了故障恢复时间。 9. 故障处理中的核心功能恢复情况和多活业务的恢复措施,展现了B站在故障处理中的有效应对和恢复能力. 10. 隔离和解耦、应对故障恢复之后的流量、基础服务要做严格的测试、应急响应是值得思考和学习的重点。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《SRE 实践:服务可靠性案例课》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部