一个误报的烟雾报警器如何差点淹掉 Jane Street 在纽约唯一的数据中心
AI 披露:本文完全由人手撰写,AI 负责校对和轻度编辑。保留了一些有品味的不完美之处,以增强侘寂效果。
大家都听说过 Jane Street 有多厉害。但很少有人听说过那些差点让它倒闭的蠢事,以及它是如何靠毅力和狗屎运挺过来的。其中一些事发生时,我正在系统团队里。Jane Street 不设头衔,我们系统团队的人也不介意亲自动手。你可以把我們看作公司里的蓝领 OCaml 程序员:出了故障,在走廊里狂奔去修的就是我们。这个故事可以算是 Jane Street 版的《星际迷航:下层舰员》。
很长一段时间里,Jane Street 坚持把机房设在交易大厅附近。公司只有 10 个人的时候,这还挺可爱。到了 150 人的时候,就开始让人觉得……有点怪了。部分原因是知识产权方面的顾虑:他们不想冒险让间谍偷走服务器,从而学到他们宝贵的交易策略。另一个原因是技术风险:他们希望确保失控的自动化交易系统总能被关掉——跑过走廊拔掉电源线就行。
是的,已经有工具可以缓解这两种担忧。但 Jane Street 在这类事情上动作慢得让人恼火,而且他们仍然想要拔电源线这个最后手段。他们的风险文化并不完全来自阅读高深的思想文章。很大一部分是由一位曾在核潜艇上服役的合伙人灌输的,而且这一点体现得很明显,多数情况下是好的方面!在潜艇上,除非有一个涂成红色、机械连接的粗大拉杆可以拉下来关掉它,否则你不会信任自动化系统。
随着公司发展,这间简陋的机房被扩建成了一个相当规模的数据中心,配有在线 UPS、机房空调(CRAC)机组、冰箱大小的网络交换机、一台地下柴油备用发电机,以及大约 10 排服务器机柜,每排 10 个机柜深。哦,而且这一切都塞在一栋名为 1 New York Plaza 的摩天大楼中间,那栋楼除此之外就只是一栋普通的办公楼。
我刚到 Jane Street 工作时,每天从皇后区通勤到曼哈顿最南端,单程一个多小时。我高中上的是市里的磁石学校,所以从青少年时期起就一直这样通勤,我已经受够了。
既然赚着华尔街的大钱,我决定租个公寓。一个房产中介一直想带我看他们所谓的“让人流口水的房子”,但我只关心一件事:离办公室近。最后我租了一间 200 平方英尺的单间公寓,从公寓门到交易大厅的工位,步行通勤 9 分钟。我会怪怪地向系统团队其他人炫耀这一点,但这也意味着办公室所有人都知道,一旦有紧急情况,我就在咫尺之遥。
那一天很快就来了。一天下班后,我正要走进公寓楼的电梯,电话响了。是香港办公室打来的,当香港有纽约的问题时,他们打的是(现在)我的号码。我们纽约数据中心的烟雾报警器响了。
我们有承包商在数据中心旁边的准备间施工。切割东西时扬起了一些灰尘,触发了烟雾报警器。这很糟糕,但原因可能和你想的不一样。办公楼里装有用于灭火的喷淋系统。你可能在电影里见过,有人把点燃的香烟举到天花板上的喷淋头前,整个房间就被淹了。现实中他们没那么蠢,但也差不多了。
首先,像我们这样的机房上方的喷淋系统通常并非始终充满水。这样可以避免多年来头顶上方可能出现的任何漏水问题。其次,喷淋头并没有烟雾传感器。相反,由另一个系统检测烟雾,此时管道会充满加压水,但还不会喷洒。触发喷洒的是热量:每个喷淋头都有自己的热敏塞,当周围空气变得足够热时就会打开。其逻辑是,烟雾报警必须是真实的,无论是什么火灾触发了它,既然已经变得非常热,说明火势尚未得到控制,喷淋系统应该用水将其浇灭。
当然,我们数据中心的天花板上布满了完全按这种方式设置的喷淋头。我们仍然没事,因为即使承包商可能因扬起灰尘而触发了烟雾探测器,也没有实际的火产生热量,所以喷淋头不会喷洒,对吧?嗯,不对。这个装置的最后一个环节是,如果烟雾报警器检测到烟雾,继续让空气在房间内循环将是极其糟糕的,因为那会助长任何火势,所以烟雾报警器被接线到关闭 CRAC 机组(!)
现在你能看出问题了吗?装满机柜的房间有很高的冷却需求。如果关闭冷却,温度就会开始攀升。如果你有一堆因为烟雾报警而刚刚被加压的喷淋头,那么你现在面临一个严重的、可能终结业务的问题。
于是我的任务变得明确:以我尽可能快的速度,赶回 Jane Street,进入机房,在温度攀升超过 150 F 且喷淋系统摧毁一切之前,拔掉那个房间里每台设备的电源线。
我跑下(名字颇具讽刺意味的)金融区的 Water Street,速度大概比任何人都快,猛按 1 NYP 大堂的电梯按钮,非常不耐烦地等电梯爬升 33 层,将门禁卡猛拍在读卡器上,冲过主办公室的门,急右转奔向机房门,再次将门禁卡猛拍上去,踏入感觉像桑拿房的空间,一排一排、一个机柜一个机柜地,双手猛拽电源线。
然后我盯着温度监测器。141 F。142。143。143.5。143.6。终于它停了下来。机房里笼罩着一种我从未听过的寂静。
机房被设在走廊对面,以便有人总能跑进去拔掉电源线。我怀疑没有人设想过这样做是为了从该死的喷淋系统手中拯救服务器。
由于纽约主要市场当天休市,这场闹剧造成的停机时间极小,第二天早上我们就恢复运行了。
那之后开了几次会。你可能会想象 Gordon Gekko 冷酷地决定谁的职业生涯结束了,但 Jane Street 的会议从来不是那样的。它们就事论事、冷静理智,说实话还挺有趣的,更像是大学宿舍里的工程系学生争论出了什么问题。所有这些冷静讨论的结果是:喷淋系统保留,我们将加强流程和监控,我们将继续在紧邻交易大厅的办公楼里托管服务器。也就是说,直到 Hurricane Sandy 迎面重击我们,但那是另一个故事了。
至于我,当第二天早上到来时,我知道必须做什么。我们的香港团队只是靠运气发现了问题:有人碰巧在显示器上看到一台又一台服务器弹出温度攀升的状况。没有哪台服务器被配置为仅因稍微有点热就发出警报,因为那种情况时有发生。但许多服务器温度全面上升意味着存在普遍性的冷却故障。
我们需要的是一套专为此目的打造的系统监控工具,一套我们可以信赖、在向每台 Linux 服务器询问其温度并计算简单平均值这项任务上绝对可靠、万无一失的工具。Bash 胜任不了。Perl 也不行。不,如此量级的工作需要的是你能想象到的最可靠、类型最安全的编程语言。于是我打开 emacs,用老牌的 OCaml 写了出来:每分钟直接向每个位置的每台服务器询问其板载传感器的温度,取平均值,如果温度偏高,就向系统团队所有人发出警报,让大家检查数据中心是否过热。
是的,我们本也可以在 CRAC 机组停机或房间内专用温度传感器读数偏高时发出警报,但这类遥测数据的可靠性远不如此,而未知的未知仍然可能毁掉你,所以有时候最持久的做法真的就是向你那批 Linux 机器询问温度,然后如果平均值稍微偏高就大惊小怪。
我们团队与那位有核潜艇经验的伙伴互动不多,但我愿意相信他会认可这种做法。
有更惨的故事?通过 X、Bluesky、Hacker News 或 Lobsters 告诉我。
related posts
- Why Google didn't use Git
- OCaml Compiler Implemented in C++: It's Not Just Faster—It Also Increases Trust
- Will superintelligent AGI even care about OCaml?