管理层们如蒙大赦般退开,陆泽绷紧的肩线肉眼可见地松弛了半分。?y\o,u¨p/i^n,x,s~w..,c*o?m*
陈默走到他身后,这个高级工程师再次紧张,后颈的绒毛都竖了起来。
“集群状态?”陈默问。
“锁…锁服务主节点cpu100%,子节点拒绝握手。”陆泽声音发颤,“仲裁日志显示同步延迟超阈值,触发自锁。”
“还…还在查。”一滴汗砸在键盘上。
陈默俯身,手指划过屏幕调出网络流量热力图。
代表数据中心内部东西向流量的区域正燃烧着病态的深紫。“bgp协议流量激增三百倍,”他指尖敲在紫斑中心,“查这个异常节点,现在。”
陆泽像抓住救命稻草,手指终于落向键盘。
命令行的白光在他瞳孔里跳动。
五分钟后,嘶哑的汇报响起:“是…是物料追溯子系统!它在疯狂广播路由更新!”
一直沉默的徐双龙猛地抬头:“不可能!那模块上周刚做完负载均衡切割!”
“但路由表的确在爆炸性增长!”陆泽调出滚动的路由表日志,屏幕被疯狂的“update”指令淹没。
陈默眼神一凛:“切到备份区独立链路,物理隔离故障节点。¢v!7`x`s-w′.+c,o?m/”
徐双龙扑向控制台执行指令。
三分钟后,主屏幕上代表网络风暴的紫斑开始消退,但aps核心集群的绿色波浪线依旧是一条死寂的直线。
“锁服务还是没活!”彭聪一拳砸在控制台上。
“内存泄漏源没掐断。”陈默目光如扫描仪般掠过陆泽的屏幕,“dump出锁服务进程堆栈,过滤‘materialtrace’关键字。”
陆泽依言操作。
海量的内存地址与十六进制码中,一行刺目的报错被高亮捕获:
[fatal] materialtrace jvm heap overflow - hashmap resize deadlock
“哈希表死锁?”徐双龙失声,“这模块的代码审计是我亲自做的!负载测试时百万级物料条目都…”
他的话戛然而止。
陈默已经调出某个开发项目数据库切换日志。
一条记录如冰锥刺入眼帘:
2017-06-27 23:58:11 物料主数据表完成从oracle到gaussdb的在线迁移。′i·7^b-o_o^k/.*c.o\m′
死寂。
只有空调风口的嘶鸣在指挥厅回荡。
所有人都明白了。
压力测试清空了数据,却没重置物料表迁移后触发的自增长索引阈值。
当子系统的jvm试图扩容hashmap以容纳新的物料id段时,撞上了分布式锁的同步机制,两个核心模块在内存的修罗场里同归于尽。
“修复方案?”陈默的声音听不出波澜。
“重启锁服务集群,强制清除死锁。”张锐语速急促,“但数据一致性会崩!排程引擎可能输出冲突指令,引发产线混料!”
“先恢复生产。”陈默斩钉截铁,“数据修复窗口我向左董要。”
他拿起专线电话。
拨号音只响半声便被接通。
“讲。”左梦安的声音依旧洪亮。
“根因确认:公司内部的开发项目数据迁移触发模块级死锁。需立即重启aps锁服务集群,代价是未来24小时排程数据存在冲突风险。”
陈默语速平稳如弹道计算,“申请授权,并协调产线启动人工干预预案。”
电话那头沉默了五秒。
五秒里,指挥厅所有人屏住呼吸。
“准。”左梦安吐出一个字,“数据烂账我可以扛二十四小时。天亮前,我要产线动起来。”
当重启指令最终从陈默唇间吐出时,陆泽几乎是扑在回车键上。
指令化为光脉冲窜入地下光缆的深海,穿过城市地脉,撞进两千公里外松山湖数据中心的核心交换矩阵。
主屏幕上,代表aps核心集群的灰色方块开始闪烁。
一秒,两秒……第五秒,第一个方块泛起微弱的绿意,接着是第二个,第三个!
绿色波纹以燎原之势蔓延,死寂的波浪线猛地抬头,向上蹿升!