首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

大规模系统工程中的故障探讨

故障已经成为任何大规模系统工程中的一部分。脸谱(Facebook)的价值观之一就是拥抱故障。门洛帕克市(Menlo park)脸谱总部的墙上,悬挂着这样的海报:“假如没有恐惧,你会做什么?”和“天佑勇者”。

为了让脸谱在快速变化中保持系统的高可靠性,通用的故障模式就很值得研究了,特别是构建用于处理故障的各种抽象。这可以让工程师能够采取最好的措施确保在脸谱的整个基础设施中提高系统可靠性。为了抽象出可靠性概念,就必须理解大规模系统中的故障。为此工程师们构建了故障诊断工具和事故复审(incident review)机制,来不断改进系统,并预防未来的故障。虽然每一种故障都有自己特有的情形,但是,很多故障都能归结到为数有限的几个根本原因上。

1. 单机故障

一台单独的机器经常会发生孤立的故障(例如,某台机器的硬盘驱动器出现了故障,或部署在某台机器上的软件服务出现了诸如内存崩溃或死锁等代码缺陷)。这种故障不会影响到基础设施的其他部分。避免此类单机故障的关键是实现自动化。自动化可以将已知的故障模式(如产生S.M.A.R.T.错误的硬盘驱动器)和搜索未知问题的异常征兆(如替换那些响应时间异常慢的服务器)相结合,达到自动检测与处理故障的最佳效果。当自动化方法找出了某个未知问题的征兆时,就可以通过人工检查帮助我们开发出更好的工具来检测并解决未来可能出现的问题。

2. 合法负载发生变化

脸谱用户的行为方式变化有时会给计算基础设施带来挑战。例如,发生世界范围的重大事件时,独特的负载类型会以异乎寻常的方式增加计算基础设施的压力。贝拉克·奥巴马(Barack Obama)取得2008年美国总统大选时,他的脸谱主页经历了创纪录的活跃。全美橄榄球超级杯(Super Bowl)或世界杯等大型体育赛事中的关键比赛也会导致极高的用户访问量及更新量。为应对这种负载变化,需要一些负载测试手段,如采用灰度上线(dark launches),以对用户透明的方式激活软件的功能点,从而确保新的软件功能上线时能够适应并处理负载压力。

在这些事件发生期间收集到的统计数据通常能为系统设计提供一种独特的视角。重大事件常常会引发用户行为的改变(例如围绕某个特定对象所发生的比较集中的用户行为)。与这些变化相关的数据通常会引领系统设计决策的方向,使系统能在后续事件中运行得更加顺畅。

3. 人为错误

脸谱鼓励工程师们“快速行动,破除陈规”(这是悬挂在脸谱总部墙上的另一幅海报),但在快速行动的同时,也会引入许多人为因素导致的错误。数据表明,人为错误是造成系统故障的因素之一。每违反一次服务等级协议对应着一个没有达到内部可靠性目标并触发了一次系统报警的实例。由于我们的目标非常严格,所以这些故障中的大多数都属于小故障,不会被用户察觉。

这两组数据似乎意味着,当脸谱员工忙于其他事务(如周末、假期,甚至绩效评估)而无法活跃地更新基础设施时,系统的可靠性显得相对更高。我们认为,这一现象并不说明问题应归咎于员工的粗心大意,而是证明了基础设施在面对诸如单机故障等非人为因素的错误时,大都能够自我修复。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200726A06C5300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com