余晟:让自家系统瘫痪,这事我也干过

最近几天国内互联网圈接连出现停服事故,先是支付宝停服超过 2 小时,然后是携程停服超过 8 小时。一时间许多人大惊:原来大玩家们的运维水平这么出乎意料。

我想说的是,我认识的做技术的,许多人都有把网站(系统)搞瘫痪的经历。有些聚会上,说不出自己把系统搞崩溃过的经历,人家都不认为你是“自己人”。还好,我是可以荣列“自己人”队伍的,下面我要说的就是我的经历。

2007 年,我当时在“抓虾网”做后台开发。网龄老一点的读者大概会记得这个网站,当时排名第一的中文在线 RSS
阅读器。如果不理解什么是“RSS 阅读”,可以理解为“博客的朋友圈”:当时还没有微信,只有博客,在线 RSS
阅读就是把你关注各博客的更新都抓回来,拼成“朋友圈”方便阅读的工具。

问题出现在一天晚上。有一张数据库的表里记录了当前等待执行的任务,通常来说,里面的记录应该不超过 100 条。不幸那天程序出了点问题,到下午 6 点堆积了两三千条记录,我一直调到晚上 8 点多才算解决,看着数据量一点点降下去,我放心地回家了。

到 11 点半,洗漱完毕,马上要上床睡觉了,我想登上服务器确认问题已经解决。检查发现,还有不到 200
条记录。看来问题确实已经解决了,只是看着这个数字确实有些不爽,平时都不到 100
呢。于是我想,不如把表给清空了吧,数字就好看了,反正都是会反复执行的临时记录,也没什么影响。

等我输入清空数据库表的 truncate 语句之后,稍微感觉有些异样,怎么执行了这么久,平时不用 1 秒的语句,现在竟然执行了 5 秒。再看看监控系统,瞬间大惊失色,瞌睡全无:原来我把最重要的博客地址列表给清空了,抓取、分析、存储模块群龙无首,都在空转。

与 delete from 相比,用 truncate 语句清空,速度很快,但无法通过日志来恢复;虽然数据库有热备,但可以想象,1 秒不到的时间里,这条错误的指令已经发送到各台热备机,所以大家都清空了这张表……

我当时刚刚工作不久,而且一直做后台开发,从来没有遇到过这样程度的在线问题。第一反应就是打电话给领导,于是我拨通了振宇(现任去哪儿网集团执行
副总裁&无线事业群 CEO)的电话。振宇听完我的描述,只平静地说:赶紧恢复数据,最迟明天早上必须要解决,不要让用户感觉到。

我本来是想让他告诉我怎么处理,结果他只给了我一个目标。后台系统平时都是我在维护,找其它同事也帮不上忙。所以我虽然满头大汗,也只能努力静下心来,想想到底要怎么办。

首先我把相关的模块都停下来,避免弄得自己心烦意乱。然后把数据库的表都画在纸上,看看互相之间的关联,能不能拼一份数据出来。很快我找到了从几张
表拼出原始数据的方案(这时候才知道冗余设计是多么好)。写了一个 Python 脚本测试,通过。那么赶紧上线!这时候是凌晨 1 点。

然而事情并没有那么简单,数据倒是恢复出来了,速度慢得吓人。一共有五百多万条数据要恢复,每秒钟只能恢复不到 50 条数据,全部恢复要超过 1 天,肯定会严重影响客户体验的。

虽然已经接近 2
点了,但我睡意全无(也不敢有)又束手无策。只能一边徒劳地看着恢复进度,一边分析:如果没有冷备(当时确实没有),看来全部恢复是得 1
天了。怎么能不让用户发现呢?出个维护通告?……忽然我想到,既然用户订阅数都在,先把活跃用户订阅的、订阅数量多的博客地址挑出来,然后再恢复其它的。

很快我统计出符合条件的记录,大概六十万条,按照每秒 50 条的速度,一小时可以恢复 18 万条,4 小时左右可以全部恢复完毕。现在不到 3
点,全部恢复完毕是早上 7 点左右,用户的第一个活跃期在早上 8 点多(当时绝大多数人都是 PC 上网),应该来得及。

再写程序,测试,通过,再上线,观察了一段时间,发现速度是正常的,符合预期。这时候已经四点多,全身湿透了。我给振宇发了个短信说“已经在恢复了,确保不会影响客户体验”,才倒下去睡觉……

天亮了,起床第一件事就是检查恢复进程,发现没有问题。然后我怀着忐忑的心情,装做没事人一样去上班,果然没有人发现问题。中午吃饭的时候我偷偷找

到运维的同事,说了这件事情。他的反应更让我出乎意料:这有啥,大家都有采坑的时候,我以前在百度,迷糊了把几个T的前端缓存删掉了,出去抽颗烟,回来该
怎么样还怎么样……

到当天下午,没有人订阅的数据也已经恢复了,整个过程还算成功,没有用户发现异样。

后记

这次事件给我的印象太深刻了,尤其是大半夜惊心动魄地调试,说折阳寿真是不夸张。所以在这之后,我把冷备做起来了,把备份恢复方案做起来了,把数据

库分账号控制做起来了,再也不敢随便清空数据表了……吃一堑长一智,好的系统都是一个个小坑填出来的,重要的是看到小坑就要去甜,不能永远靠人力处理,靠
手工搏斗。长期来看,我改变了工作习惯,每次接手生产系统,第一时间会去关注系统的完整和安全,不再着迷于系统架构和代码质量。

现在再回想,还有两点庆幸:一是抓虾是面对中文用户的服务,后来面对要支持多国协作的系统时,才真正知道“全球化”意味着什么;二是振宇当时只设定
了目标,给了我锻炼和成长的机会(后来和新浪谈技术合作,他给我发的短信只有一句话“今天一定要把新浪的人搞定”,我印象也很深刻)。

当然,对我来说,最重要的收获是一条终身受用的道理:哪怕情况再紧急,也不能手足无措,静下来心来仔细分析,这才是解决问题的根本途径。有经验和没有经验的差别,很多时候不在专业技术上,而在于把握能力上。

来源:51CTO

时间: 2024-08-01 12:13:44

余晟:让自家系统瘫痪,这事我也干过的相关文章

12306网上订票系统瘫痪背后的那些事儿

"因机房空调系统故障,正在积极组织抢修.目前暂停互联网售票.退票.改签业务."春运还没开始,小小的元旦又让日点击量超14亿,堪称"网站传奇"的12306铁路客户服务中心网上订票系统down掉了,意外的是,就连车站的自动售票柜机也跟风"罢工".12306反复瘫痪,究竟为什么? 难道,真的像官方所说,是由于"机房空调系统故障"吗?这样的解释,你信吗? 我想,如果空调能说话了,它的第一句肯定会是:原来,不动,也中枪. 远的不说,今年

[明察秋毫]以史为鉴 宁夏银行7月系统瘫痪解析

这段时间,存储圈内对宁夏银行7月系统瘫痪事件讨论热烈,为什么作为在IT基础架构和系统建设都相对严谨和严格的银行会频频出现宕机等问题.可能大家还记得2013年6月工行和中国银行的两次事件. "6月23日,中国工商银行系统瘫痪导致全国多地工行系统柜面取款.ATM.网银等无法办理.24日,中国银行系统也短暂瘫痪,一时间金融业钱荒,银行股价暴跌,金融市场流动性紧张." 对于去年发生的银行系统问题,网友讨论也比较多,归结起来,还是系统维护方面纰漏. 对于今年宁夏银行的系统瘫痪事件,官方消息如下

卡巴斯基误杀Windows文件 致系统瘫痪

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 2007年12月20日上午,杀毒软件卡巴斯基再次出现误杀,错将Windows系统文件"explorer.exe"认定为病毒,并"建议用户删除".不过,卡巴斯基很快纠正了这一错误,用户在更新病毒库之后就不会发生误杀. 据悉,某网站大量员工成为"误杀"的受害者,"explore

网上信访首日“系统瘫痪 无法注册”不实

晨报讯(记者 邹乐)昨天是国家信访局全面开放网上投诉受理内容的第一天,有 网友微博表示"网站无法注册",质疑"系统首日即瘫痪".不过记者于昨天21时至22时多次注册.登录国家信访局官方网站的"网上投诉"和"网上建议"专栏,均正常显示.记者注意到,网上投诉建议需凭密码登录才能提交,其 他人无法看到相应信息.注册需登记实名.身份证号码.家庭住址.联系方式等.注册成功后即可登录提交"投诉事项","投诉事

工行网银系统瘫痪近九小时

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 今天中午11时许,有北京客户在使用工行网银系统时发现,该行主网站处于瘫痪状态,由此造成 网上银行系统无法登陆.据 工商银行宁夏分行一位工作人员称,实际上早9点,网上银行系统就已经不正常了. 到中午12点许,工行总行一位工作人员告诉记者,他已接到多人投诉网银系统无法使用.由此造成的问题涉及全国范围. 在北京市分行鼓楼外大街储蓄所,记者看到,由于

【系统那点事】如何将磁盘从GPT格式转换成MBR【win8换win7】

随机预装Win8的电脑,磁盘为GPT格式的,如果需要安装Win7等早期版本系统,需要转换为MBR格式的,使用Diskpart命令即可完成转换. 操作步骤: 注意:转换磁盘格式需要清空磁盘中的所有分区和数据,在操作前,请保存好磁盘中所有重要数据. 1.使用Win7光盘或者U盘引导,进入系统安装界面. 2.按Shift + F10打开命令提示符. 3.输入"Diskpart"(不用输入引号,下同),并按回车,进入操作界面 4.输入:"list disk",查看磁盘信息.

【系统那点事】Win10预览篇

乘着现在神智还清楚发下win10安装过程(和win8非常相似)  win10 32位中文版:http://go.microsoft.com/fwlink/?LinkId=510230  win10 64位中文版:http://go.microsoft.com/fwlink/?LinkId=510229  win10 32位英文版:http://go.microsoft.com/fwlink/?LinkId=510226  win10 64位英文版:http://go.microsoft.com/

是谁导致华盛顿特区70%的CCTV系统瘫痪?

上个月12日-15日期间美国华盛顿特区的警用闭路电视监控系统(CCTV)曾遭黑客入侵,70%的CCTV视频存储设备遭遇勒索软件,听起来的确相当牛掰.就在最近,一对夫妻在英国遭到逮捕--国外媒体报道称,这两个人可能就是入侵华盛顿CCTV系统的人. 遭到逮捕的夫妻二人今年皆50岁,为一名英国男性和一位瑞典女性,目前被关押在伦敦南部的斯特里汉姆(Streatham),将被保释到今年4月份.二人是在1月19日,距川普就职典礼不到24小时之际由英国国家打击犯罪局(National Crime Agency

漫谈信息安全设计与治理之云系统的那些事

大家好,手头的项目告一段落,哥上周休假去了.记得在电影<罗马假日>里曾有提到:"要么读书,要么旅行,身体与灵魂,必须有一个在路上." 所以,习惯阅读与思考的我在行囊里也放了一本专业书籍.玩耍了一整天后,夜深人静之时也会拿出来抚卷阅读.同行的损友笑话我:出来放松还把自己整得像头上悬着达摩克利斯之剑似的.我只能说:世人笑我太痴狂,燕雀安知鸿鹄之志.好吧,不扯远了,继续这次的正题吧. 跟大家汇报一下,前几次提到过的那个云平台项目基本已成型,现在进入到了对其服务连续性和灾备以及安全