45 分钟烧掉 4.4 亿美元,平均每秒蒸发 16 万
45 分钟烧掉 4.4 亿美元,平均每秒蒸发 16 万。 2012 年 8 月 1 日的一个普通周三早晨,全美最大的华尔街做市商 Knight Capital,把自己送进了历史。 没有黑客入侵,没有复杂的算法失控。 干掉这家巨头的,是一行在系统里沉睡了 9 年的死代码。 这起人类软件工程史上最昂贵的事故,到底是怎么引爆的? 它背后的机器,叫「死代码复活与开关复用」。 早在 2003 年,Knight 内部写过一个叫 Power Peg 的测试模块。 它的功能只有一个:在测试环境下不计成本地以市价狂买,用来测试股票价格的波动反应。 测试完成后,这套逻辑被弃用。 但它从未被从生产环境的代码库里彻底删掉。 它像一颗埋在底层系统里的地雷,静静躺了 9 年。 2012 年夏天,纽交所推出散户流动性计划(RLP)。 Knight 的工程师需要上线一套新功能去对接这套新交易规则。 为了省事,工程师没有为新功能申请独立的配置开关,直接复用了 2003 年 Power Peg 留下的旧开关标志位。 只要部署了新代码,这个开关就会激活新功能。 只要新代码覆盖了所有机器,一切看似毫无破绽。 致命的断裂发生在了部署环节。 当时这家每天处理 200 亿美元交易的金融巨头,依然靠运维人员手动往 8 台服务器上拷贝代码。 工程师拷贝了 7 台,漏掉了第 8 台。 8 月 1 日上午 9 点 30 分,美股开盘,系统开关被统一拨通。 前 7 台服务器正常运转。 唯独漏掉更新的第 8 台服务器,收到开关指令后,瞬间唤醒了沉睡 9 年的 Power Peg。 更糟的是,2005 年的一次底层重构,已经删掉了原有的成交量累计计数器。 第 8 台服务器失去了所有的刹车机制,开始以毫秒级速度,疯狂在市场上买高卖低。 灾难到这里原本还有救。 真正把公司彻底推进深渊的,是接下来的「致命回滚」。 开盘仅仅几分钟,后台就收到了数十封系统错误邮件。 运维团队陷入恐慌,他们本能地做出判断:一定是刚刚上线的新代码出了问题。 于是他们做出了工程史上最灾难的一个决定:把另外 7 台已经更新的正常服务器,紧急回滚到旧版本。 这一次回滚,成了最后的引信。 原本只有 1 台服务器在发疯。 回滚之后,所有 8 台服务器的旧版代码全部复活,同时接入了那个被拨通的旧开关。 8 台机器以 8 倍的速度,在全市场无休止地倾泻错误订单。 45 分钟后,管理层终于强行切断系统。 但一切已经无法挽回。 400 万笔错误成交,涉及 154 只股票,累积了 70 亿美元毫无意义的风险头寸。 实际亏损定格在 4.4 亿美元。 而这家做市商账上的全部净资本,只有 3.65 亿。 两天之内,公司股价暴跌 75%。 美国证券交易委员会在随后的调查报告 Release No. 34-70694 中,依据《市场准入规则》Rule 15c3-5 开出重罚。 4 个月后,这家曾经承接美股近两成零售交易的巨头被竞争对手 Getco 廉价吞并,彻底清算。 复杂系统的崩溃,很少死于深奥未知的理论缺陷。 它往往死于极其平庸的侥幸:留着没删的废弃代码、图省事复用的配置开关、缺乏自动化校验的手工部署,以及在恐慌中盲目按下的回滚键。 软件工程里最危险的技术债,从来不是那些明知有缺陷的业务逻辑。 真正致命的,是那些被所有人遗忘、却依然连在点火线上的死开关。
相关 / RELATED
JSON- M最可怕的 Bug,是你写了 100% 正确的代码,机器却硬生生给你“编”错了。 这就是硅谷著名的 “Core 59” 悬…
- M科技24 岁的 Leopold Aschenbrenner 曾是硅谷最受追捧的技术预言家
- M17分钟的顶级烟花,如果压缩到30秒内全部放完,会发生什么? 2012年7月4日,美国独立日,加州圣地亚哥(San Di…
- M几周时间挖出的代码漏洞,比一辈子加起来都多。 世界顶级 AI 安全研究员 Nicholas Carlini 放出这句狠话…
- M科技硅谷一家公司开出 600 万美元的预算,打算让 4 名工程师花整整 5 年,只做一件事:重写代码库里的老旧测试
- M顶级金融机构遇到大危机,怎么赚大钱? 不只是在交易室里预测价格。 他们会在大公司暴雷的第一时间,冲到“事故现场”,把还活…
导出 / EXPORT
订阅 · SUBSCRIBE
每周一封信号简报,重大进展可选即时推送。