故障中的跨年夜
2019 年 12 月 31 日晚,我正在公司門口準備打車回家,因為想跟家里人一起過個跨年夜。
望著燈光四射的廣州塔,腦海里突然出現了 2012 年跨年夜的場景。那時候也是 12 月 31 日晚, 也有出租車, 也有廣州塔,還有一個跨年的故障。
我記得當晚,我們一幫同學四人,約好了去廣州塔倒數,畢竟還年輕,對跨年倒數這個事情還蠻熱衷的。
說好了,他們三個搭出租車,到我樓下的路口來接我。
那晚天氣稍冷,需要穿兩到三件衣服的樣子,時不時有微風吹過。路上行人絡繹不絕,大家三三兩兩的,都朝廣州塔方向走去。路邊綠化樹上,各高樓外墻,廣州塔上,燈光閃閃。一片喜慶熱鬧的圖景。
搭載著我同學的出租車到了,我趕忙上了車,一上車,大家就七嘴八舌地寒暄起來,雖然同在廣州,但一年見面相聚的次數也不多,每次相聚,都像認識了幾十年的老友。
大家聊得正酣的時候,我的手機突然響了。?我打開手機一看 ,?公司的電話,“完了,麻煩來了!”??我的潛意識猶如條件反射般 ,立馬想到了故障。
我接聽了電話,是值班機器人的報警,提示說我有一個5星報警,需要我關注。
我立馬打開了微信,報警機器人給我推送了一條 機器磁盤占用率超過 80% 的報警。
我點進那條 h5 消息,看了具體的細節。?是 朋友圈集群 的一組機器,看曲線,機器的磁盤占用率已經達到 80%了, 而且還有繼續上漲的趨勢。
(以下的內容偏技術化,不感興趣的同學可以略過:
2012 年,年中的時候,我們已經將自研存儲系統推廣到了微信的賬號,聯系人等模塊,朋友圈模塊是一個月前剛接入的。因為朋友圈的寫入量相比其它業務要大很多,所以確實存在一些待優化的地方,但因為人力緊張,還沒給排上期。
當初存儲系統的設計,為了追求更高的性能,采用的是追加寫的模式,所以會引入數據膨脹的問題。不過,我們設計了一套數據回收機制,可以讓機器在夜晚低峰期的時候,做數據回收。不過遇到寫入量巨大的時候,會出現回收速度趕不上寫入速度,導致爆磁盤的隱患。
那晚的故障,便是這個原因帶來的。)
我一看,磁盤占用率已經80%了,心里一緊,想著回家 vpn 處理,但剛上出租車,而且大家伙已經大半年沒聚了,真不想掃大家的興。
后來我靜下心來仔細想了想,想到了處理的辦法。我趕緊聯系了一個開發同事A, 但A剛好也在外面,然后又聯系了運維同學B, B在家里,可以幫忙 vpn 處理。
處理方式不難,就是提前打開磁盤回收進程,回收磁盤空間,但過程中需要時刻監控機器的負載,保證服務質量不受影響,所以需要有人一直盯著。
我電話跟 B 說明了整個過程,他表示沒問題,可以處理。
于是,我心稍微安定了下來。?10 分鐘后,出租車到達了廣州塔周邊的一個露天酒吧,我們準備在那個露天酒吧喝點啤酒,然后看著廣州塔的上的倒計時跨年倒數。
一下車,我靠路邊站定,立馬電話運維同學B, 詢問處理的情況。?他說一切操作完畢,回收進程已經開啟,目前磁盤占用率由 80% 下降到了 75% 。
我心更安定了些。我們走進酒吧,找地方坐定,我同學點了些酒。喝著啤酒,就著些小吃,看著珠江上的游船和對岸珠江新城絢麗的燈光,著實愜意,不過忽得想起那個故障來,心里又隱隱升起一絲擔憂。
23:59:50 秒,廣州塔上出現了倒數的計時器, 我們仰頭對著計時器,跟著全酒吧的人一起倒數??“10 , 9 , 8 , 7 , 6, 5, 4,3,2,1?”, “耶, 新年快樂!!!”? 我們舉杯同慶。
大家沉浸在一片歡樂中,我看有人開始認真拿著手機,在編輯什么。我也打開了手機,習慣性的打開朋友圈,一看,?“麻煩又來了”。就在剛剛一分鐘不到的時間里,已經多了十幾條的新動態,我想朋友圈的那組機器可能要撐不住了!
我趕緊電話了運維同學 B,?確實如我所料,磁盤占用率飛速上漲,目前已經到 85% 了,而且上漲勢頭不減。
我跟 B 說,再調大回收的速度吧,也暫時想不到更好的處理辦法了。?B 立馬著手了操作。調大了速度后,磁盤的回收速度是加快了,但機器的負載也上去了,感覺是游走在崩潰的邊緣呀!
我心里緊張極了,但也只能期待老天爺保佑了!
后來,我每5分鐘一個電話,詢問最新的情況,所幸,到了 00 :20?分后,朋友圈的寫入量降了下來,總算得救了。
我們幾個同學喝了些啤酒后,覺得肚子有點餓,提議去吃夜宵。
打車走了 10 公里左右,去到了一個港式茶餐廳。下了車,我們進入餐廳里面坐定,我又拿起手機,跟運維同學 B 詳細核對了各個數據和機器的表現,才最終安定下來。
準備開吃的時候,我同學說,“你從出來到現在,打了快十個電話了,有那么忙嗎?今晚是跨年夜呀!”??“唉,沒辦法呀,遇到故障,總要處理的!不過現在已經搞定了,來,以茶代酒,我們干一杯吧!?新年快樂!!!”?
那晚,雖然一路都在處理故障,不過最后總也算是跨年了。
這種苦逼的事情,在后面還時有發生,不過隨著系統建設的完善,發生的次數也越來越少了。
后來,我們總結了那次的故障:
1 系統可以不完善,但需要有完備的故障處理預案
我們當時的系統確實還不夠完善,因為建設時間不夠。不過當時也存在故障處理預案不夠完備的問題,導致最后要賭運氣。后來,就這塊,我們也制定了更完備的處理預案。
2 一定要安排好備份負責人
這部分,我們應對的還不錯,當時至少有 4 個備份負責人,雖然是在跨年夜,有些同學外出聚會了,但最終還是能找到人 vpn ?處理。
3?及時地響應
這里包含兩個部分,一個是實時的報警機制;一個是人的響應意識。實時的報警機制我們一早就建設了;人的意識方面,雖然我當時正在跟同學聚會,不過也是及時處理了。
4 事后的總結和優化
事后,我們就暴露出來的問題,進行了仔細地分析和總結,并制定了一些列地改進措施和優化方案,使得同類問題不再出現。
以上,便是那個難忘的故障跨年夜了。
現在想來,早已沒有了苦逼的感覺,反而覺得有些幸運,正是那一個又一個苦逼的時刻,歷練了自己,讓自己成長。
有技術能力上的成長,有心里素質上的提升,還有問題處理經驗上的積累。
新的一年又來臨了,今年已經是 2020 年, 21 世紀的第三個十年的起始,也是中國互聯網第三個十年的開始,希望又是一個紅利爆發的十年!
最后,祝大家新年快樂!也祝大家技術進步,工作順利,賺錢多多!
總結
- 上一篇: switch多值匹配骚操作,带你涨姿势!
- 下一篇: 阿里巴巴为什么要禁用 Executors