大家好,我是Fox。
这几天技术圈最热闹的事,莫过于B站又双叒叕崩了。
1月16日,网红“牢A”(斯奎奇大王)首播,区区21万预约,硬是把B站服务器给干趴下了。直播没看成,大家倒是看了一场“服务器去世”的实况表演。
很多兄弟在群里问我:“Fox老师,淘宝双11每秒几千万并发都没事,B站好歹也是上市大厂,怎么20万就崩成PPT了?”
问到点子上了。哪怕是外行都看得出来,这不仅仅是“意外”,这是严重的“技术事故”。
今天我们就抛开官方的客套话,从架构师的视角,带大家扒一扒B站这次崩溃背后的技术真相。
一、 21万就崩?别拿“DDoS”当遮羞布
这一波B站被骂得最惨的点在于:“不仅菜,还借口多”。官方解释是“流量过大”。
说句扎心的:21万 QPS 算大吗?对于微博热搜、淘宝秒杀这种级别,21万连“热身”都算不上。B站作为日活大几千万的平台,核心网关层(Gateway)连这点并发都扛不住?
真相是:死于“轻敌”和“重试风暴”。
容量规划(Capacity Planning)严重失误:跨年晚会是“S级保障”,服务器早扩容好了,严阵以待。而“牢A”直播可能只被评级为普通活动,资源池预留不足。这不是技术能力问题,这是管理傲慢问题。
客户端成了“帮凶”——重试风暴(Retry Storm):这才是很多崩溃真正的幕后黑手。当21万人进不去直播间时,用户在疯狂点刷新,App后台可能也在自动疯狂重试。 如果客户端没有做合理的退避策略(Exponential Backoff),21万人的手机瞬间就变成了“肉鸡”,对着自家服务器发起了几百万次的请求。原本只是门口堵车,结果大家一拥而上,把收费站(网关)给踩塌了。
二、 崩了直播,为什么全站白屏?
这才是最让我这个架构师感到“窒息”的操作。
按理说,直播崩了,你就崩直播呗。结果呢?首页白屏、视频加载失败、甚至毫不相干的番剧区评论也没了。
虽然我们看不了B站的内部监控大盘,但从“全站白屏”的症状看,这是教科书级别的雪崩效应(Avalanche Effect)。
根本原因在于核心资源缺乏隔离(Bulkheading Failure):
很有可能,直播服务和主站业务,共享了同一个核心 API 网关或者鉴权中心(Identity Service)。
当直播流量把网关的线程池(Thread Pool)占满,或者把关键的鉴权 Redis 连接数打爆;
其他无辜的用户想看个番剧,请求到了网关,发现“连接被拒绝”或者鉴权超时。
这叫什么?这叫“城门失火,殃及池鱼”。这种强耦合架构,放在2025年的大厂里,绝对是 P0 级的重大技术债务。
三、 “降本增笑”引发的蝴蝶效应
大家发现没有,2025年到现在,B站大大小小崩了至少5次。
并不是只有大主播才会崩,B站现在的状态是“薛定谔的稳定性”,光是叫得上号的就有:
8月《凡人》韩立结婴,全站瘫痪;
10月30日,无缘无故的区域性白屏;
12月跨年晚会,蹲妹直接变PPT;
1月16日牢A首播未遂;
甚至就在前两天(1月18日),网页端又出现了大规模的评论区失联。
这频率,比我写Bug的频率都高。
作为架构师,我们都懂一个道理:高可用(High Availability)是拿钱堆出来的。B站这两年喊着“降本增效”,结果大家都看到了,变成了“降本增笑”。
这背后往往掩盖着极其危险的“赌徒心态”: 为了省钱,可能砍掉了多云灾备(只用一家云,挂了没地儿切),或者把服务器冗余池(Buffer)压到了极限。
平时风平浪静,大家看着财报笑嘻嘻;一旦遇到突发流量(Spike Traffic),系统没有缓冲带,HPA(自动扩容)还没来得及拉起新节点,老节点就已经被冲垮了。
四、 Fox有话说
虽然我们常调侃“草台班子”,但B站这次是真的给我们所有技术人上了一课。
给B站的建议(如果你们听得见的话):
做好资源隔离:既然 Redis 和网关容易崩,那就把泳道(Lane)划分清楚!直播服务和主站服务必须物理隔离。就算直播侧扛不住,把故障锁死在直播域里,别连累全站陪葬。
治理客户端行为:紧急排查一下 App 的重试逻辑,加上随机抖动(Jitter)。别让自家的 App 变成攻击自家的武器。
落地降级策略:扛不住时,直接入口限流,只放前 50% 预约用户进来,甚至关掉弹幕保视频流。保住核心体验,总比“全站火葬场”强。
给各位兄弟的建议:咱们做系统设计时,千万别迷信“大厂光环”。 如果你在面试时说:“我的系统能抗住高并发”,面试官问你:“如果鉴权服务挂了,你的首页还能打开吗?” 如果你答不上来,那你可能就和现在的B站一样尴尬了。
最后总结一句:压垮B站的从来不是那区区21万流量,而是“降本”大刀之下,早已被掏空的技术底座。
https://mp.weixin.qq.com/s/kBH_TMuUds4y5qo6ugOLEg