双子塔首页

返回首页 微信
微信
手机版
手机版

程序员的一次失误,在 45 分钟里搞垮了一家上市公司_百人牛牛斗地主

2020-04-01 新闻来源:双子塔首页 围观:258
电脑广告
手机广告
【百人牛牛游戏】【百人牛牛的走势图】【百人牛牛斗地主】

假如有人通知你,45 分钟就可以搞垮一家大公司,你大概会以为有点谬妄。但工程师 Doug Seven 却真的亲历过如许的事变。

8 年前,因为一次失利的布置,Knight Capital Group 在仅仅 45 分钟内就造成了 4.6 亿美圆的吃亏。

这是一个实在的故事。

只管 Doug Seven 并非事宜的参与者,但他在厥后的集会中不停说起 DevOps、代码设置和延续托付的主题,愿望让开发人员意想到布置的重要性。

究竟是怎么回事?Doug Seven 在博客中分享了这个故事。

故事背景

这个故事的主角是一家名为 Knight Capital Group 的美国环球金融服务公司,它处置做市、电子实行、机构贩卖和生意业务。

2012 年,Knight 是美国最大的股票生意业务商,在纽约证交所和纳斯达克的市场份额约为 17%。Knight 电子生意业务团体(ETG)均匀逐日生意业务量凌驾 33 亿笔,逐日生意业务额凌驾 210 亿美圆。

各种数据表明,当时公司的运营和财务状况异常优异。

2012 年 7 月 31 日,Knight 拥有约 3.65 亿美圆的资产。

当时,纽约证交所正设想于 2012 年 8 月 1 日推出一项新的零售流动性设想。

为了预备此次运动,Knight 更新了他们的路由器 SMARS。这个路由器担任将定单发送到市场上实行。SMARS 的中心功用之一是吸收 Knight 生意业务平台其他组件的定单(父定单),然后发送一个或多个子定单实行。换言之,SMARS 将从生意业务平台收到大批定单,并将它们分红多个较小的定单,以便找到股票数目相婚配的买家或许卖家。父定单越大,生成的子定单越多。

在 SMARS 中,有一段老旧的代码,名为「Power Peg」,它已 8 年没被用到过了,而此次更新的目标恰是要换掉这段代码。更新的代码从新调整了用于激活 Power Peg 功用的旧标志的功用。

代码经过了完全的测试,而且还举行了一系列的考证。一切的一切都看起来很圆满,找不到失足的来由。

死灰复燃的旧代码

2012 年 7 月 27 日至 2012 年 7 月 31 日时期,Knight 的开发人员天天手动将新的软件布置到公司的 8 台服务器上。这就是 SEC 文件中关于手动布置历程的内容。假如 SEC 文件中有关于布置的内容,那末就大概涌现了严峻的毛病。

但是,在新代码的布置历程当中,Knight 的一位技术人员遗忘将新代码复制到一切 8 台 SMARS 盘算机服务器中――他漏掉了个中一台服务器。

没有第二个技术人员来检察这个布置。

Knight 的一切人都没有意想到,Power Peg 代码并没有从第 8 个服务器上删除,也没有增加新的 RLP 代码。Knight 没有书面流程请求如许的检察。

2012 年 8 月 1 日,在美国东部时候上午 9:30,市场收盘。Knight 入手下手代表客户处置惩罚定单。

具有准确 SMARS 布置的 7 台服务器入手下手准确处置惩罚这些定单。但是,发送到第 8 台服务器的敕令触发了可支撑的从新应用标志,并从死地中恢复了旧的 Power Peg 代码。

杀手代码如僵尸般的进击

Power Peg 代码用于在实行子定单时,依据父定单盘算购置或许出卖的股分。Power Peg 将指导体系在完成父定单后住手传送子定单。

【百人牛牛官网】【百人牛牛怎么玩】【百人牛牛棋牌游戏】

也就是说,Power Peg 会跟踪子定单,并在父定单完成后住手它们。

2005 年,Knight 将这类累计跟踪功用移到了代码实行的初期阶段,从而从 Power Peg 中删除了计数跟踪。

当激活第 8 台服务器上的 Power Peg 标志时,Power Peg 功用入手下手路由子定单以供实行。但因为没有依据父定单跟踪同享量,造成了一个永无止境的轮回。

地狱 45 分钟

设想一下,假如你有一个体系,它可以向市场发送自动化的、高速的定单,且没有任何跟踪程序来搜检是不是实行了充足的定单,会发作什么?没有比这更蹩脚的事了。

上午 9:30 开市时,人们很快就晓得出了问题。到上午 9 点 31 分,华尔街的许多人都清晰发作了一些严峻的事变。市场上充溢着非正常生意业务量的股票定单。

到上午 9 点 32 分,华尔街的人们都在想,为何定单还没有停下来,为何没有人按下任何体系的封闭开关?效果他们发明,并没有封闭开关。在生意业务的前 45 分钟里,Knight 的生意业务量占了总生意业务量的 50% 以上,这使得某些股票的市值上涨了 10% 以上。因而,其他股票因毛病的生意业务而代价降低。

更蹩脚的是,Knight 的体系在当天早些时候入手下手自动发送电子邮件。早在上午 8:01,SMAR 已处置惩罚了相符上市前生意业务前提的定单。邮件音讯援用 SMARS,并将毛病识别为「Power Peg disabled」。

在上午 8:01 到 9:30 之间,Knight 事情人员也收到了 97 封邮件。惋惜的是,这些电子邮件不是作为体系警报设想的,因而没有人马上检察它们。

在 Knight 阅历的 45 分钟内,他们尝试了几种反制步伐,试图阻挠毛病的生意业务。因为没有停止开关,所以他们只能在及时生意业务环境中尝试诊断问题。

每分钟,体系上约有 800 万股股票被生意业务。他们没法肯定是什么致使了毛病的敕令,所以他们从准确布置的服务器上卸载了新代码。

换句话说,他们删除了事情代码,留下了破坏的代码。

这越发放大了问题。最入手下手,仅在布置不准确的服务器上,分外的父敕令激活了 Power Peg 代码。如今,问题舒展到了一切服务器上。末了,他们终究住手了体系,但此时已举行了 45 分钟的生意业务。

在收盘的前 45 分钟,市场收到并处置惩罚了 212 份父定单。因而,SMARS 向市场发送了数以百万计的子定单,产生了 400 万笔生意业务,而个中 154 只股票的生意业务量凌驾了 3.97 亿股。这意味着,Knight 资源团体在 45 分钟内造成了 4.6 亿美圆的吃亏。

但是,Knight 只要 3.65 亿美圆的资产。

45 分钟后,美国股市最大的生意业务商、纽约证交所和纳斯达克的主要做市商 Knight 破产,4 个月后被 Getco LLC 收买。

软件宣布必需可反复、牢靠

一切开发和运营团队都应该从此次事宜中吸取教训。仅仅构建优异的软件并对其举行测试是不够的,你还必需确保它被准确地托付给市场,如许你的客户才取得你所托付的代价。

布置 SMARS 的工程师并非此事唯一的责任人,Knight 设置的流程和他们所面对的风险并不婚配。另外,他们的流程天生就轻易失足。任何时候,假如你的布置历程依赖于人主动浏览和遵照申明,那末都将面对风险。人是会出错的。毛病大概涌如今指令中,也大概涌如今指令的诠释中,或涌如今指令的实行中。

布置须要自动化,而且可反复,尽量防止潜伏的工资毛病。假如 Knight 完成了自动化布置体系,将设置、布置和测试悉数自动化,那末此次毛病本可以防止。

纵然没有实行完全的一连托付历程,你依然须要恪守的几个一连托付准绳:

软件宣布应该是一个可反复、牢靠的历程。

尽量地自动化。

雷锋网雷锋网雷锋网

【百人牛牛技巧】【百人牛牛棋牌游戏】【百人牛牛的走势图】
文章底部电脑广告
手机广告位-内容正文底部

相关文章