管理層們如蒙大赦般退開,陸澤繃緊的肩線肉眼可見地松弛了半分。
陳默走到他身后,這個高級工程師再次緊張,后頸的絨毛都豎了起來。
“集群狀態?”陳默問。
“鎖…鎖服務主節點cpu100%,子節點拒絕握手。”陸澤聲音發顫,“仲裁日志顯示同步延遲超閾值,觸發自鎖。”
“還…還在查。”一滴汗砸在鍵盤上。
陳默俯身,手指劃過屏幕調出網絡流量熱力圖。
代表數據中心內部東西向流量的區域正燃燒著病態的深紫。“bgp協議流量激增三百倍,”他指尖敲在紫斑中心,“查這個異常節點,現在。”
陸澤像抓住救命稻草,手指終于落向鍵盤。
命令行的白光在他瞳孔里跳動。
五分鐘后,嘶啞的匯報響起:“是…是物料追溯子系統!它在瘋狂廣播路由更新!”
一直沉默的徐雙龍猛地抬頭:“不可能!那模塊上周剛做完負載均衡切割!”
“但路由表的確在爆炸性增長!”陸澤調出滾動的路由表日志,屏幕被瘋狂的“update”指令淹沒。
陳默眼神一凜:“切到備份區獨立鏈路,物理隔離故障節點。”
徐雙龍撲向控制臺執行指令。
三分鐘后,主屏幕上代表網絡風暴的紫斑開始消退,但aps核心集群的綠色波浪線依舊是一條死寂的直線。
“鎖服務還是沒活!”彭聰一拳砸在控制臺上。
“內存泄漏源沒掐斷。”陳默目光如掃描儀般掠過陸澤的屏幕,“dup出鎖服務進程堆棧,過濾‘aterialtrace’關鍵字。”
陸澤依言操作。
海量的內存地址與十六進制碼中,一行刺目的報錯被高亮捕獲:
[fatal]aterialtracejvheapoverflow-hashapresizedeadlock
“哈希表死鎖?”徐雙龍失聲,“這模塊的代碼審計是我親自做的!負載測試時百萬級物料條目都…”
他的話戛然而止。
陳默已經調出某個開發項目數據庫切換日志。
一條記錄如冰錐刺入眼簾:
2017-06-2723:58:11物料主數據表完成從oracle到gasdb的在線遷移。
死寂。
只有空調風口的嘶鳴在指揮廳回蕩。
所有人都明白了。
壓力測試清空了數據,卻沒重置物料表遷移后觸發的自增長索引閾值。
當子系統的jv試圖擴容hashap以容納新的物料id段時,撞上了分布式鎖的同步機制,兩個核心模塊在內存的修羅場里同歸于盡。
“修復方案?”陳默的聲音聽不出波瀾。
“重啟鎖服務集群,強制清除死鎖。”張銳語速急促,“但數據一致性會崩!排程引擎可能輸出沖突指令,引發產線混料!”
“先恢復生產。”陳默斬釘截鐵,“數據修復窗口我向左董要。”
他拿起專線電話。
撥號音只響半聲便被接通。