接上一篇《工程事故與現(xiàn)實世界》琼富,繼續(xù)分享一些現(xiàn)實中的工程事故淮逊,以及其中帶來的啟示。
關(guān)鍵報警
1979 年 3 月杀餐,美國賓夕法尼亞州三里島核電站發(fā)生泄漏,20 英里范圍內(nèi)的居民全部撤離朱巨,從此以后美國放棄了核電站建設(shè)史翘。
事故發(fā)生時,反應(yīng)堆容器發(fā)生壓力積聚冀续,在這種情況下琼讽,正常的應(yīng)對方案是打開一個安全閥門,降低壓力到安全水平洪唐。這個安全閥門的設(shè)計是通過加電壓到電磁制動器上使其打開钻蹬,打開后會有一個監(jiān)控指示燈亮起,降壓后重新關(guān)上閥門凭需,指示燈就會熄滅问欠。
操作人員在壓力聚集后按正常處理流程進行了閥門打開降壓操作,壓力下來后粒蜈,操作人員移除電壓顺献,閥門應(yīng)該關(guān)閉,但實際上閥門被卡在了打開位置薪伏,而此時的監(jiān)控指示燈卻熄滅了滚澜,操作人員誤以為閥門已正常關(guān)閉,實際卻并沒有關(guān)上嫁怀。
之后设捐,反應(yīng)堆容器中的冷卻劑一直泄漏了近 2 小時,直到反應(yīng)堆頂部從冷卻液中暴露出來塘淑,燃料棒和芯塊開始融毀萝招,在隨后的倉皇失措中,輪班人員一直相信控制面板上的指示燈存捺,認為人工減壓閥處于正常的關(guān)閉狀態(tài)槐沼。
就是這樣一個小小的報警指示燈故障,導(dǎo)致了這次核事故捌治。對于像核反應(yīng)堆閥門這樣的關(guān)鍵系統(tǒng)部件岗钩,其工作狀態(tài)需要更準確的監(jiān)控報警,甚至多重監(jiān)控報警進行交叉驗證肖油。比如:除了電路傳感的指示燈報警兼吓,還應(yīng)該有更直接的開閉位置傳感報警。
三里島核事故帶來的啟示是:對于系統(tǒng)中的核心關(guān)鍵節(jié)點森枪,需要絕對直接而且準確的監(jiān)控報警视搏,報警本身就需要高可用,而且還能多重交叉驗證县袱。
忽略變化
20 世紀 50 年代浑娜,英國哈維蘭公司開發(fā)出了第一個商用噴氣式飛機,但后來該機型在同一年連續(xù)兩次出現(xiàn)墜毀式散。
后經(jīng)事故調(diào)查研究找到了原因:噴氣式飛機因為比其他機型飛行高度更高筋遭,在飛機起飛和著陸時為使乘客不至于感到不適,不可避免要進行機內(nèi)空氣加壓和減壓循環(huán)暴拄;而在噴氣式飛機出現(xiàn)之前的機型因為飛行高度低宛畦,不需要做加壓和減壓循環(huán)處理;當時的飛機設(shè)計人員沒人想到這會有什么影響揍移。
但反復(fù)的空氣加壓和減壓循環(huán)次和,導(dǎo)致飛機頂部天窗用以發(fā)射無線電的鉚釘處金屬疲勞,產(chǎn)生應(yīng)力老化裂紋那伐,多次加減壓循環(huán)后踏施,裂紋擴大變成了裂縫,最終在某次飛行過程中導(dǎo)致了空中解體罕邀。在飛機實驗室的壓力測試環(huán)境下并沒有真實的模仿實際的加壓和減壓周期畅形,工程師對自己設(shè)計的可靠性陷入了一種錯誤的認識之中。
更可怕的是诉探,在第一次墜機事故后日熬,并沒有找到這個真正的原因,以為是一次意外偶然事件肾胯。在該機型停飛了兩個月后竖席,由英國首相丘吉爾和該公司總裁聯(lián)合做出保證不會再出事耘纱,數(shù)周后該公司的另一架由羅馬飛往開羅的班機又墜毀于地中海后,工程師們才找到真正的原因毕荐。
在我們做系統(tǒng)時束析,有一些變化發(fā)生了,可能只是我們沒有注意到憎亚;還有一些變化可能并不常發(fā)生员寇,它只在特定的異常下發(fā)生〉诿溃互聯(lián)網(wǎng)應(yīng)用的很多在線系統(tǒng)蝶锋,大部分時候流量壓力是逐步積累的,但在特定的情形下也可能會發(fā)生劇烈的變化什往。同樣一個量級的流量扳缕,是逐步達到的,還是突然劇烈產(chǎn)生的恶守,對系統(tǒng)帶來的壓力并不一樣第献。
比如,在做 IM 系統(tǒng)時兔港,有一種場景是如果出現(xiàn)集中網(wǎng)絡(luò)閃斷庸毫,那么所有 IM 客戶端的長連接都會一起斷開,并集中重連衫樊。這時負載均衡極有可能會讓突發(fā)的集中重連流量全部打到后端第一個被輪詢到的機器上飒赃,單機就會被突發(fā)的集中流量擊垮。而如果是逐步提升的流量科侈,則會均勻的被均衡到后端所有的分布式服務(wù)器上载佳。
設(shè)計時,盡力考慮所有可能的使用場景變化臀栈,而哈維蘭的教訓(xùn)實在太深刻與悲痛了蔫慧。
蠕變效應(yīng)
2006 年,波士頓的一個隧道內(nèi)权薯,有 4 塊天花板姑躲,每塊重 3 噸,突然脫落掉了下來盟蚣,砸中了行駛中的小車黍析。
那么問題來了,天花板為什么會突然坍塌屎开,而之前卻毫無征兆阐枣?它們是如何固定的?天花板是由金屬支架支撐,支架使用螺栓插入鉆孔固定在隧道頂部蔼两,而螺栓則使用環(huán)氧樹脂膠填充螺栓和孔腔之間的間隙甩鳄。
環(huán)氧樹脂是一種聚合物,其硬度會隨時間和溫度的變化而變化宪哩,如果突然施加一個負載娩贷,環(huán)氧樹脂能在短時間內(nèi)很好的保持原來的形狀第晰。但如果其持續(xù)承受負載(靜態(tài)負載)锁孟,聚合物的分子可能會慢慢移動,造成環(huán)氧樹脂逐漸變形茁瘦,這個過程就是 “蠕變”品抽。
而隧道中使用的環(huán)氧樹脂具有很差的抗蠕變性,負責安裝的工程師忽略了這個事實甜熔,也可能是對此缺乏了解圆恤,因此造成了這次事故。
而程序系統(tǒng)中類似 “蠕變效應(yīng)” 的問題有很多腔稀,比如:磁盤日志盆昙,緩存空間,內(nèi)存回收焊虏,數(shù)據(jù)存儲淡喜,索引周期。所有這些都可能因為足夠長時間的系統(tǒng)運行诵闭,造成 “蠕變” 積聚炼团,直到撐不住引發(fā)事故。
系統(tǒng)中沒有所謂的抗 “蠕變” 組件疏尿,因此我們需要對這些可能發(fā)生 “蠕變” 的地方進行周期性的檢查瘟芝,并及時處理。
...
以上就是我這次雙十一前讀到的一些關(guān)于現(xiàn)實世界更傳統(tǒng)的工程事故褥琐,以及帶給我的啟示锌俱。泰坦尼克號號稱當時世界上最安全的船,在撞上冰山之后敌呈,回過頭來一看到處都是顯而易見的問題贸宏。俄國作家費奧多·陀思妥耶夫斯基曾說過一句名言:
當失敗時,似乎一切都顯得愚蠢驱富。
現(xiàn)實世界的工程事故會顯得更殘酷锚赤,不免感慨工程師真要有敬畏之心,能修復(fù)缺陷褐鸥,解決問題固然不錯线脚,但能提前去規(guī)避和發(fā)現(xiàn)會更好。