从百度、亚马逊AWS宕机,看越来越“失控”的科技

2017-3-28 14:08| 发布者: Chris| 查看: 3384| 评论: 0

我们可能永远无法知道到底发生了什么问题。

       2月28日消息,有网友反馈百度搜索移动端手机浏览器及手机百度APP出现宕机,用户无法使用搜索功能,页面提示“很抱歉,您要访问的页面不存在!”无独有偶,北京时间 3 月 1 日凌晨,亚马逊 AWS S3 服务突然出现故障,波及一大批流行网站和服务——包括 Airbnb、 Pinterest、Time,、CNBC、Docker、IFTTT、Medium、Nest、News Corp、Quora、Razer、Slack、Sailthru 和 Zendesk 等。为什么科技在人们的手里会越来越“失控”?

       2010年5月6日下午2:42至2:47,道琼斯工业指数暴跌600点,当天已经下跌了300点了。市场缩水9%,上万亿美元蒸发。在最低点的时候,CNBC评论员伊林•博纳(Erin Burnet)报道说宝洁公司股份已经下跌24%至每股47美元。坐在她旁边的市场专家吉姆•克莱默(Jim Cramer)立马说:“这肯定不是真实的价格,赶紧去买宝洁公司股票吧。”就在他解释为什么购买宝洁公司股票是明智之举的时候,市场已经止跌回弹,上升了300点。显然很多人,包括自动买入卖出的计算机,也认为是什么出了问题,重新买入股票。克莱默一分钟后又说:“肯定是机器出了问题,系统出现大故障了。”

       我们可能永远无法知道到底发生了什么问题。目前有一些理论解释造成“闪电崩溃”的原因,但是没有一个普遍认可的解释。最好的猜测就是一宗大型的交易因为计算机交易的不正常情况而放大了影响。

       复杂意味着越来越不可预测和不可控制。

       对智能系统的行为做出预测对于人类操作者来说越来越困难,因为智能系统以及它所运行的环境日益复杂。要让操作人员了解复杂的计算机在想什么,以及预测计算机的行为以协调人机团队的行动,实际上是增加了操作人员的责任。设计出具有高度适应性,独立于人控制的计算机和机械零件是工程师的长远目标。但是,这个目标是否能完全实现仍是个问题,因此也不清楚人类是否会被大型复杂系统运行排除在外。同时,当意外情况出现时,仍需要人类帮助机器做出响应。

       复杂系统本质上说是不可预测的,一旦碰到意外情况容易出现各种问题。即使是设计精妙的复杂系统也会出现未曾预料到的问题。概率很低的事件一般为人所忽视,且没有做过计划,但是这种事件的确会发生。

       从更广泛的角度出发,世界经济体也是一个复杂的适应性系统,其行为受到多种因素的影响,比如天气、政治事件、单个市场及公司的表现、单个行为者包括计算机的决策等。换句话说,系统之内包含另一个系统,另一个系统内还有一个系统。反馈回路会影响每一个系统及组成部分的行为。

       系统理论学者认为偶然的、不可预测的不稳定活动对于复杂系统而言是正常的。换句话说,“闪电崩溃”发生时,机器并没有坏,只是做了应该做的事,正如“全球鹰”无人机的软件只是按照编程程序要求做事。

      现在想象一下一台计算机模拟硬币投掷 ,每毫秒进行一次(千分之一秒)。对于计算机而言,得到连续10次反面朝上的概率与人类是一样的,但是人每投掷一次硬币需要5秒钟。所以说,这个简单的事实就是计算机投掷硬币的速度要比人快得多,这意味着计算机每过几秒钟就可能得到连续10次反面朝上。 人类则需要一个半小时才能实现。交易速度加快即能加快异常值的出现。

      计算机的行动与输入信息的耦合加剧了复杂性,如信息输入的数量,以及软件如何根据这些输入信息做出交易的决定。增加系统的复杂性会影响所有可能事件的分布,从而出现更多的异常值。简单地说,由于复杂性增加,分布曲线会拉很长或是尾部增厚,计算机行动越不可预测,它们造成的影响也复杂。

      当系统的各个元素紧密耦合或是复杂系统之间产生重要的影响,一些小的不可预料的事件会在整个大系统中产生反响并带来影响深远的后果。全球金融服务公司雷曼兄弟(建于1850年)与其他主要的金融机构有千丝万缕的联系,2008年该公司破产之时,威胁到全球整体金融系统。幸运的是,全球金融大系统十分强健,它吸纳了这些损失并在没有雷曼的情况下进行了结构调整。这种强健部分原因是在预料到雷曼兄弟破产的有限几天里,其他的金融机构做了大量的准备工作。如果没有那段时间,众多公司同时倒闭将造成国际银行系统崩溃。

       从所有的可能性分析,“闪电崩溃”是由于某一系统的低概率事件引起的,又因其他系统的低概率响应变得复杂化。刚开始的不正常交易引发了链式反应,因此造成了剧烈的且短时间的影响。

       可以肯定的是,这并非一个很精确的诊断。我们没有办法证明这个理论,或是这个问题的其他解释是对还是不对。但是,计算机交易导致的低概率事件的预防和管理问题的确值得注意以防止未来出现类似的危机。

       计算机模拟是提前确定复杂系统可能遇到的各种情况的最好办法。好的模拟将影响系统行为的信息输入和影响建立模型。通过运行成千上万的不同场景,工程师或商业分析人员能够了解不同的情况导致较低或较高发生可能性的情况。好的模型能为提前规划提供信息并得出应在复杂系统中加入哪些安全机制。他们能帮助减少某些灾难发生的可能性,当然并非所有的灾难都能防止发生。

复杂系统科技失控的四个原因

       复杂系统酿成灾难主要有四个原因(或四个原因的综合体),如果我们无法避免这几个原因同时发生,预防其中某一个原因也不容易。

       管理人员或实际操作人员的无能或错误操作是第一个原因。切尔诺贝利核电站事故发生之前及过程中出现了一连串的错误决策。管理层和操作人员都没有受过良好的训练,为防止电站停堆采取了不当的补救措施。切尔诺贝利核事故发生只是迟早的问题。

       一些追逐利润的管理层不愿意采取昂贵的安全系统,也是系统出现故障,导致危害发生的其中一个原因。2010年4月至7月,位于墨西哥湾的“深水地平线”离岸油井爆炸,导致11名工人死亡,490万桶原油泄露。如果英国石油公司和越洋公司(负主要责任的企业)的高管不急于完工,并不在安全措施方面大打折扣,这场事故本可以避免或者说后果不会如此严重。

       设计缺陷或薄弱环节是复杂系统发生故障的第二个原因。反应堆设计缺陷是切尔诺贝利核泄漏事故发生的原因之一,程序错误或故障十分常见。通常情况下,用户并不会注意到软件的薄弱环节,除非各种事件同时发生。比如,像Windows操作系统的新版本有几百万条代码行,在对外开放使用的时候,就有成千个已知的故障,还有些故障直到终端用户报告才为人所知。

       消除复杂系统的故障是一个持续不断的过程,因为每次故障维修都会遗留新的薄弱环节。正如第二章中提到的骑士贸易公司不到一个小时就在华尔街损失了4.4亿美元,主要原因是用了一个尚未成熟的新软件。关键软件在投入使用之前一定要进行严格的测试。很多情况下,软件没有得到充分测试,并且再严密的检测也会遗漏一些薄弱环节。

       此外,每一个薄弱环节都可能遭到不当利用,比如黑客制造计算机病毒,或是出于非法目的侵入系统。在网络犯罪和网络情报等蓬勃兴起的领域,带有非法目的的黑客已发展成一门高端艺术。我们对于阻挡破坏性病毒和阻止利用计算机薄弱点从事犯罪活动的各种反计算机病毒程序、防火墙、密码等都已非常熟悉。但不幸的是,这些安全措施增加了复杂性,导致诸多不便,更重要的是,增加了复杂系统的不可预测性。

       第三,对社会技术系统的关键特征缺乏关注往往导致灾难发生。1984年12月2日,印度博帕尔联合碳化物公司农药厂异氰酸甲酯毒气泄漏导致3700人死亡,事故发生前该化工厂已经发生了很多小事故。但没有发出警示提醒周边居民,当天晚上泄漏发生后,风速缓慢以及毒气扩散的方向都是造成严重事故的原因。上述因素如有任何变化都会减少死亡的人数,当然悲剧还是发生了,并造成那么多人死亡。

       博帕尔事件发生后30年里,再没有发生如此严重的化工厂事故。耶鲁大学退休的社会学家查尔斯•佩罗(Charles Perrow)认为:“这并非因为我们采取了更多的安全措施;实际上,自博帕尔事件后,严重的化学事故发生概率是上升的,但是我们已没有如此规模的大厂和环境条件可供酿成一起灾难性事故。”

       佩罗认为1979年宾夕法尼亚州三里岛核事故就是常态化事故的典型范例。该事故是因为三个方面同时出现问题造成的。反应堆设计者为每一种部件失灵制定了后备措施,但是他们并没有或许是无法解决多方面问题同时出现的情况。要为此类紧急情况做出预案,需要设计人员分析各个方面都出现问题时可能造成的影响。考虑到复杂的核反应堆中零部件如此之多,各种组合情况浩如繁沙。也许设计者可以对关键部件同时失灵的情况进行认真研究,但是这需要花费大量的时间和金钱。

       工程师不会把全部精力都放在考量各种可能性的存在。1996年畅销书作家麦肯姆•格拉德维尔(Malcolm Gladwell)发表了一篇分析三里岛核事故以及1986年挑战者号航天飞机爆炸的文章。挑战者号上的所有机组人员和乘客都殉难了,包括首次受邀参与飞行的来自新罕布什尔的教师克里斯塔•麦考利夫(Christa  McAuliffe)。

       挑战者号失事原因最终追溯到一个环形密封套垫——O形环,因为一向阳光普照的佛罗里达有一段时间寒冷天气增多,导致O形环脆化。格拉德维尔得出结论,一般的理解是这些事请是因为各色人等没有很好地履职才导致这些不正常的事故发生,像三里岛核电站事故,有些处理程序抓住了多种因素产生的故障问题,但还是会忽视某些可能性。格拉德维尔写道:“我们所构建的世界发生高科技灾难的潜在可能性已经深植于日常生活之中。”

       考虑到重大事故并非经常发生,管理不善、糟糕设计以及一般性的事故都可以看成是低概率事件。问题在于,认为此类事件不太可能发生正是问题所在,这也是复杂系统出现故障的第四个原因。

       通常,一些不幸事故发生的可能性被低估了,因此没有提前采取预防措施。这些事件被称为“黑天鹅”,因为人们看到黑天鹅通常会感到惊讶。黎巴嫩裔美国人纳西姆•塔勒布(Nsaasim Taleb)是一位统计学家和畅销书作家,他支持黑天鹅理论, 强调为什么人们对低概率事故发生的不可避免性视而不见,以及为什么这种事件一旦发生会产生大范围的影响。

       塔来指出对于很多情况,钟形曲线( bell curve)并不能充分反映可能性分布概率。有些情况下,异常值发生的概率更高,标准的钟形曲线无法表现这一点。异常值发生的高概率性可以在分布曲线的末端加上一个“厚尾”或“长尾”进行视觉化表现。

       更糟糕的是,在许多真实情况下,我们并不清楚实际可能性究竟是怎样的,而是不合理地消除了异常值,直至真的发生了异常事故。个人以及机构的行为比我们所理解的要危险得多。一家投资公司的战略可能多年来十分有效,但是突然某一天股票狂跌,这一战略导致公司倒闭。从多年来公司持续盈利的角度来看,该公司的战略看起来是成功的,但是从公司最终不可避免倒闭的角度看,该战略是失败的。

       复杂技术系统,特别是计算机系统的行为大多被看成是低概率事件。就像赌场里的老虎机,所有标志排成一条线才能中头奖,但是这种情况并不常发生。低概率的事件并非完全无法预测,但是什么时候、在哪发生很难预测。此外,我们对于计算机系统可能的行动方案以及采取某些行动的可能性了解甚少。这是因为我们往计算机的计算程序中添加了数不清的信息节,而这些计算程序决定计算机采取何种行动。在某一既定时刻,输入的信息是具有独特性的。我们再看看第二章中所提及的闪电崩溃,也许能够更清楚地理解这个问题了。

<
>
返回顶部