我想说的是,我知道的做技能的,许多人都有把网站(体系)搞瘫痪的阅历。有些聚会上,说不出自个把体系搞溃散过的阅历,人家都不以为你是“自个人”。还好,我是能够荣列“自个人”部队的,下面我要说的即是我的阅历。
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 上彀),应当来得及。
再写程序,测验,经过,再上线,观察了一段时间,发现速度是正常的,契合预期。这时分现已四点多,全身湿透了。我给振宇发了个短信说“现已在康复了,保证不会影响客户体会”,才倒下去睡觉……
天亮了,起床榜首件事即是查看康复进程,发现没有疑问。然后我怀着忐忑的心境,装做没事人一样去上班,公然没有人发现疑问。正午就餐的时分我偷偷找到运维的搭档,说了这件作业。他的反响更让我出人意料:这有啥,我们都有采坑的时分,我以前在baidu,模糊了把几个T的前端缓存删掉了,出去抽颗烟,回来该怎样样还怎样样……
到当天下午,没有人订阅的数据也现已康复了,全部进程还算成功,没有用户发现异常。
跋文
这次事情给我的形象太深入了,尤其是大深夜触目惊心地调试,说折阳寿真是不夸大。所以在这以后,我把冷备做起来了,把备份康复计划做起来了,把数据库分账号操控做起来了,再也不敢随意清空数据表了……失败乃成功之母,好的体系都是一个个小坑填出来的,主要的是看到小坑就要去甜,不能永久靠人力处理,靠手工奋斗。长时间来看,我改变了作业习气,每次接手生产体系,榜首时间会去重视体系的完好和安全,不再着迷于体系架构和代码质量。
如今再回想,还有两点幸亏:一是抓虾是面临中文用户的效劳,后来面临要支撑多国协作的体系时,才真正知道“全球化”意味着啥;二是振宇其时只设定了方针,给了我锻炼和生长的时机(后来和新浪谈技能合作,他给我发的短信只要一句话“今日必定要把新浪的人搞定”,我形象也很深入)。
当然,对我来说,最主要的收成是一条终身受用的道理:哪怕状况再紧迫,也不能不知所措,静下来心来仔细分析,这才是处理疑问的根本途径。有经验和没有经验的差别,许多时分不在专业技能上,而在于掌握才能上。(文章来自南京欣才PHP培训机构)