2021.07.13 B站是这样崩的

作者: 三太子敖丙分类: 计算机技术 发布时间: 2022-07-14 18:05:00 浏览:5426529 次

2021.07.13 B站是这样崩的

三太子敖丙:
当初想过网关、CDN、SLB、服务层的问题,说实话我也没想到这个故障是这么小的一个bug引起的,也错怪了服务层架构的高可用系统了,最后对SLB的两个同学直接respect

【回复】钱两天也崩溃了几分钟,视频进去就连接不上,我看不是我一个有问题
【回复】回复 @子非鱼_Official :我也遇到了,视频点进去就显示没网络请重试,几分钟就好了
【回复】回复 @23号监察员 :这种计算机网络术语不是一般都用缩写么?CDN SLB难道还全写成内容分发网络 负载均衡?
冷心心_Lakisha:
Up能不能举个平易近人的例子让门外汉们也大概懂到底是什么缘由。这太深奥了。

【回复】回复 @三太子敖丙 :懂了,空调死活不出风,我以为大事故,其实就是空调遥控器电池没电了[doge]
【回复】最简单的说法其实就是:你有一台电脑,机器可以正常运行的,但是你的网络交换机出问题了,你没办法上网查资料,别人也没办法访问你,而引起你交换机出问题的原因只是一行简单的代码.....这样是不是好理解一点
【回复】回复 @三太子敖丙 :其实举例成wifi比较好理解些,毕竟大家家里都在用嘛,你发现你的网断了,重启了几次wifi盒子都不好使,最后发现只是光纤的插头松了……[热词系列_知识增加]
月盈露晚秋点寒:
????这个事居然已经过去一年了???

【回复】相对论告诉我们,每个人的时间都不一样[doge]
【回复】???时间过得真快,一周年都过了
【回复】回复 @鲷鱼烧猫 :B站网崩纪念日
梦星千万:
哈哈哈,那次崩溃领的会员让我一天看完了萌王

【回复】回复 @改名称3硬币 :想当年叔叔还说过B站 LV4用户一年可领取3个月大会员,LV5用户一年可领取6个月大会员,LV6用户一年可领取9个月大会员,笑死人了
【回复】回复 @姚黄魏品 :可能说的是史莱姆了(悲)
【回复】小樱嘛,挺长的诶[妙啊]
可耐的幻蓝呀:
有没有一脸懵逼,完全看不懂的看完视频的[doge][doge]

【回复】回复 @啊啦啦啦啦啦啦噜 :机器停下来的指令错了,导致它一直停不下来,然后内存爆炸
【回复】[doge]一直在听 但是不知道自己在听啥
【回复】简单点,就是本来我说“不要 停”,本来应该是“不要,停”但语音转文字给干成了“不要停”,然后我压力更大了,再次告诉他“不要 停”,于是他又看成了“不要停”,就这样疯狂的转了起来,于是我累趴了,结果就是CPU=100%造成拒绝服务了。
喝柠檬汁的香蕉:
咱就是说根本就听不懂还硬生生听完了,并且莫名其妙觉得很牛[doge][思考]

【回复】回复 @上官筱幽 :当初我听到的版本是啊b大楼起火[doge]
【回复】回复 @上官筱幽 :机房起火都有就离谱
【回复】就去年有一天晚上,b站崩了,进不去,用不了。当时还谣言四起
周一被我射熄火了:
记得当时送了1天会员 看了2季的地狱少女

【回复】缺大会员的话我给你借[滑稽]
夜影qwe:
省流:错误代码 b='0'; _gcd = function(a,b){ if(b==0) return a _gcd(b, a%b) } 错误分析:b是字符串“0“,≠数字0,a%b 意味着 a%‘0’

【回复】回复 @Heaverno : lua是脚本语言,那会有编译呢,脚本的类型都是动态的,没有强类型指定,好处是方便,坏处就是很容易出意外。
【回复】回复 @不世玄奇 :不是啊,跟”+“有什么关系,根本原因就是第一次方法执行的锅,a%0 是会报错啊!0怎么能做分母。。。至少java过不去运行时检查,错误原因不是写着么,方法第一次的时候,因为 b是“0”,即b是字符串,所以b==0 是个false ,所以进入的是 else分支,而在else分支里进行 取模运算,b会先转换为数字,但是因为分母不能为0 如果执行数学运算 a % 0 则结果会变为 nan(Not A Number),然后进入第二次递归 入参为 (“0”"nun"),判断nun ==0 结果为false,又进入else 分支,然后取模 又是nan ;进入第三次递归的入参就成了("nun","nun") ,至此,递归出不去了,参数不变,结果不变
【回复】这种编译的时候不会报警告吗[思考]
_kagi_:
感觉就是经典的,用户走进酒吧,点了一杯蛋炒饭,然后酒吧炸了。还有一个问题,lua无限递归吗。

【回复】b第一次是字符串"0"不是0导致他递归,第二次执行的时候第二个参数传入a%b值变为nan不等于0就导致无限递归
【回复】回复 @-哎不啦不啦- :开发都是尽量避免递归的吧.递归性能大户
已知其花:
还是佩服大佬们的强大呀,大公司遇到这种问题,压力有多大可想而知[灵魂出窍][灵魂出窍]。 还有就是:普通的循环也好、递归也好,是不是都应该有个游离于业务之外的变量来控制下循环的执行次数比较好。特别是用到递归的时候,总有考虑不到的意外场景导致递归的死循环。 比如:defined recursiveFunction(args …,int recursionCount)递归之前先做已经执行循环次数的判断。(来自菜鸟的鄙见[脸红])

【回复】楼上是正确的,易于排查的代码才是重要的[蛆音娘_吃瓜群众]炫技没必要
【回复】回复 @RASBERRY- : 这个就是辗转相除法(gcd)的实现,和递归没多大关系,你写成非递归的,里面有whlie,也会出问题.
【回复】其实能不用递归就不用递归
花开の瞬间:
我也是运维,这个太真实了,系统再高可用也抵不过代码bug,正常情况下,系统崩成这样的可能性非常低,而且这种代码层的bug会导致,ec2,mysql等中间件cpu,内存一下子100%,爆掉,监控也反应不过来,无法提前感知。

【回复】回复 @幽妖梦影 :有些语言回调有限制,比如最多回调256次之类的,lua不了解,可能没有吧
【回复】这种无限递归不应该都有限制吗,一般系统不会支持代码无限递归的吧,不过我没学过服务器,可能人家真支持
【回复】话说递归了这么多次内存也没爆掉,我也不是很懂学C的,曾经写错函数名也导致了递归,一秒不到内存就溢出嗝屁了,回头检查了半天
Junkyun_Ng_曉瑤:
謝謝up主,我現在才知道有件事。就因為這個,求當時熬夜加班的同學的心理狀況……哈哈哈……不過,那個函數就一直處在not a number的死循環裡了呀……唉:-(就行@The_OWL 所說的,編程語言對變量強類型是很重要的,更何況lua是腳本語言(scripting language)。當然其他語言一樣重要。還好,沒什麼大事,虛驚一場,烏龍而已(我的數據還在)。說實話,視頻開頭,up主嚇到我了。

【回复】当时还送了会员,需要手动领,不会也没领吧[doge]
【回复】回复 @泡泡茶戴 :没记错的话就送了一天[doge]还被骂了
【回复】回复 @泡泡茶戴 :而且还把自动续费打开了[doge]
The_OWL:
说明了编程语言对变量强类型的重要性,字符串就干字符串的活。 典型被点名的就是golang,那个err被无数开发人员喷到怀疑人生。但是面向产品,对每一个可能的错误进行处理,极大的避免了程序上线后面跑崩的可能。 像C#那种直接try catch在主程序直接一包就上线,开发人员舒服了,后面产品崩起来了,死在哪都不晓得。

【回复】c#: 喵喵喵?try/catch有啥问题?又不是没有堆栈信息,你要自己给吃了,那其他语言不一样? 离谱,就硬黑
【回复】回复 @玉白箐蓝 :同感,这不是C#的问题,而是他用法不好,哪个语言经得住这样简单粗暴地乱搞[喜极而泣]
【回复】catch了异常自己吃了不抛堆栈信息是吧[翻白眼] 建议回去重新再学几遍
白夜极地:
虽然没看懂但大受震撼。想问一下各位大佬以后就业是后端好一点还是网安好一点。比较喜欢网络,考研打算网安方向。但现在学习的技术主要是java,数据库,html,css,vue,了解一点jsp,ssm(因为毕业设计是个系统)。

【回复】回复 @心和Faerie :说实话,有干网安的技术,去干开发,工资高多了。而且网安这块招人少,圈子也不开放,很多一手消息全凭人脉去问...
【回复】网安难而且工资低,后端整点分布式、大数据这种,工资立马吊打网安人[tv_难过]
【回复】你现在学的基本没一点关系,已经快考研了,不建议学网安
Sol黑格:
昨天下午五六点左右,网页端看视频有黑屏的现象,我排查电脑问题后再开其他浏览器也是如此,还有小伙伴遇到过吗

【回复】黑屏有的,还有更换视频但评论区不刷新的问题
【回复】回复 @-波动狗- :我也是,就自动播放一个列表播放完了,但最后一个的评论区还是第一个的评论区
【回复】b站网页端问题相当多,弹幕评论刷不出来,视频看着看着突然黑屏缓存,用Chrome看直播原画Pro还会内存泄露,直接占了我8G内存.
草梅友仁:
[藏狐]之前也遇到了次服务器莫名其妙跑满CPU和内存,然后一直告警,重启了几次都没能解决问题之后我就关掉告警不管了。过了几天再去看又恢复正常了。 虽然也怀疑过可能是中毒什么的,但没有足够的证据。

【回复】跑起来就行,管它咋跑起来的,哈哈哈哈
【回复】哈哈哈哈哈眼不见心不烦是吧[滑稽]
‭12dora:
理论上cpu打满了多做几次dump是大概率能很快看出问题的,不过目测事件突发的时候你耳边有一万个声音让你提供通用止血方案

【回复】就算没声音,通用止血也是运维的第一反应,减少损失最重要
【回复】哪家公司的流程都一样,报错先重启服务,再不行重启机器,再不行重装服务(或者是回滚版本),还不行就重搭建集群。运维三重,我跟同事管这叫运维三宝。
【回复】一万个,是不是有点少。
七月-竹:
两个人负责一个部门,咱就说不能多招几个人吗

【回复】这工种,懂的就是懂,不懂就是不懂,招些下手也帮不上忙。两个可能已经是不多不少刚刚好了
【回复】架构师。。。百万级别的。。。
【回复】你以为是干流水线呢,人多就行了?
三太子敖丙:
报告地址:https://b23.tv/ph37iSb 大家可以关注我还有哔哩哔哩技术,后续会继续分析事故后如何执行优化落地的,敬请期待。

【回复】根本看不懂up在说什么 但还是听完了 觉得好牛逼[喜极而泣]
【回复】回复 @六域海妖 : 我已经在录制一个不是计算机专业的小伙伴也能听懂的版本了,大家可以等我录出来再看
【回复】就是数据类型!!兄弟们我上次写了一个代码编译出错想了两个月没改出来!!
三太子敖丙:
很多人问为什么当天别的网站后来也崩了,因为大量用户2小时没地方去就涌入了那些网站,突发流量其实就是很多人一起发动了ddos的感觉。 有人问多活机房是怎样的存在,服务器都是有灾备,一般都是同城多活+异地多活,服务器放在不同机房和城市真的发生大的地址灾害也能避免被一锅端了。 为啥上线没测出来,因为预发环境没测出来?因为只有那个线上发布模式才会触发bug,而且ip等于0那个参数也不是马上触发的所以短时间也没办法发现。

【回复】这让我想到当年段子没了,几乎所有的视频平台的评论都关了
【回复】其他网站撑不住也挂了[笑哭][笑哭][笑哭]
【回复】我记得当时是B站崩了,然后上了微博热搜,结果上不了B站的人开始涌入了微博、豆瓣、知乎等平台,于是出现B站崩了、微博崩了、知乎崩了、豆瓣崩了的多平台崩了的“盛况”

职场加油站 程序员 编程 教程 互联网 经验分享 编程开发 职业职场 职场加油站2022第二季

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!