复杂系统失效原理

原文How Complex System Fail
原文作者Richard I. Cook

1. 复杂系统本质上是危险的

所有重要系统(如交通、医疗、电力等),出于自身性质的原因,必然是危险的。虽然系统发生故障的频率不断变化,系统内部处理流程在本质上具有不可降低的危险性。正是在这些危险驱使下建立的防范措施塑造了系统特征。

2. 复杂系统几乎成功的避免了故障

系统失效的高昂代价使得系统逐步建立起多层防范措施,包括技术层面(如备份系统、设备安全特性等)、人员层面(如培训、知识等)以及组织、制度和监管层面(如政策、流程、认证、行为规范、团队培训等)。它们提供的一系列防护,在通常情况下让运维操作远离事故。

3. 灾难性事故源自多重故障

防范措施有效,系统大部分时间运行正常。灾难的发生,往往是由于多个不起眼的小问题同时出现,构成触发系统性故障的条件。少一个问题灾难都不会发生,但当它们遇到一起,系统失效了。换句话说,征候远多于故障。故障最初的征候大部分被系统的安全措施屏蔽了,传递到运维层面的征候也往往没有被一线人员汇报。

4. 复杂系统包含的隐患不断变化

复杂程度导致系统无法在没有隐患的条件下运行。由于不会直接引发故障,这些隐患被当作运维中的小问题。出于成本的考虑,以及难以预测隐患对系统的威胁程度,消除隐患的改进工作受到阻碍。随着技术革新、组织结构调整和系统改进工作的调整,系统内的隐患不断变化。

5. 复杂系统总是带病运行

从上一条可以推导出:复杂系统总是带病运行。有这么多隐患的系统还能工作,因为系统包含了大量冗余,也因为一线人员的运维工作。事故调查几乎总会发现系统曾经出现过快要发生灾难的预兆。一种观点认为应当在故障发生之前找出隐患,这是对系统运维的天真想法。系统运维是动态的,每个部分(组织、人员、技术)都在持续改变。

6. 灾难随时随地可能发生

复杂系统可能发生灾难性故障。一线人员在空间和时间上离潜在故障非常近,灾难随时随地可能发生。能够引发灾难性后果是复杂系统的显著特征。不可能消除潜在风险,这是由复杂系统自身性质决定的。

7. 将事故归因于“根源”是完全错误的

系统失效源于多重故障的共同作用,没有单独的事故“原因”。导致故障的因素不止一个,每个因素又都无法独自引发事故。只有它们一同出现时才会出事。实际上,多重因素关联在一起才能构成事故发生的条件。因此无法单独剥离出事故的“根源”。基于“根源”的分析和结论反映的不是在技术层面上对故障性质的认知,而是将后果归咎于特定原因或事件的社会和文化需求。

8. 事后偏见会影响对一线人员的评价

知道后果的人倾向于认为引发故障的事件应当受到一线人员的重点关注。这表明事后对一线人员处置行为是不精确的。知道了后果的调查人员难以体会一线人员在当时是如何看待这些事件的。看起来一线人员“应当知道”这些因素“必然”引发事故。事后偏见仍然是事故调查的主要障碍,尤其在评价专业能力的时候。

9. 一线人员拥有双重身份:生产人员和维护人员

一线人员操作系统制造产品,同时也要防范事故发生。运维工作的动态性质:兼顾满足产量要求和及时处置事故征候是不可避免的。外界很少了解双重身份的问题。没有故障时,生产人员是主要身份。事故发生后,维护人员是主要身份。外界往往误认为一线人员同时处理两份工作。

10. 操作是在和不确定性博弈

事后看来,故障往往是不可避免的,一线人员的行为则是过错或对事故征兆的无视。但是一线人员的所有行为实际上是赌博,即面对未知结果采取行动。不确定的程度随时变化。事后来看,一线人员的行为显然是在赌博,并且他们赌失败了。但是相对的,成功也是赌博的结果,而这些成功往往被忽视了。

11. 一线行动澄清所有困惑

对于生产目标、资源利用效率、运维成本和效益、以对各种风险后果容忍程度之间的关系,一个组织往往有意保持模糊。一切困惑随着一线人员在系统最前端的操作得到澄清。事后一线人员的行为可能被看作是错误或违规,这种评价存在严重的事后偏见,忽视了其他方面的驱动因素,特别是生产目标压力。

12. 一线人员是复杂系统中的适应性要素

一线人员和基层管理人员主动适应系统,尽量提高生产,降低风险。适应性调整时刻在进行,包括:一、调整系统结构,减少脆弱部件引发事故的风险。二、集中关键资源满足优先需求。三、提供处置已知和未知故障的方法。四、建立检测系统状态变化的方法,以便平稳降低产能,以及其他提高故障恢复能力的方法。

13. 一线人员需要的专业能力不断变化

复杂系统的运维和管理需要大量的专业能力。一线人员的专业能力随着技术革新和人员调整而改变。无论出于哪种原因,对专业能力的培训和改进是系统功能的一部分。因此在任何时候,复杂系统中都会存在不同专业水平的一线人员和实习人员。关于专业能力的核心问题来自于:一、专业能力是一种稀缺资源,需要投入到最困难或最紧急的生产任务。二、需要培养储备专业能力以备不时之需。

14. 系统变更引入新型故障

可靠系统的低故障率鼓励变更,特别是应用新技术降低高频轻微故障的变更。这种变更可能在实际上为新型低频严重故障创造了条件。为了消除已知隐患或提高性能而引入新技术,通常为大规模灾难建立了新路径。很多时候新型低频故障可能比已经修复的问题影响更严重。新型故障难以事先预知,大家都在关注变更预计带来的好处。因为新型严重事故的频率很低,在事故发生前系统可能经历了多次变更,使得变更与故障之间的联系难以确认。

15. “根源”观点限制了防范对潜在故障的效果

事后针对“人为错误”的补救措施通常用于阻止可能“引发”事故的行为。针对事故链末端的措施只能稍微降低未来事故发生的概率。事实上,由于引发潜在故障的条件不断变化,发生相同事故的概率非常低。事后补救措施不仅没有提高安全性,反而增加了系统耦合度和复杂度。增加了潜在故障数量,也让故障检测和恢复变得更加困难。

16. 安全是整体特征,不是局部特征

安全是系统的涌现性特征,而非存在于某个人、某个设备或组织中的某个部门。安全无法购买或制造,它不是独立于其他部分的特性。因此安全不能像原材料一样进行加工。系统的安全状态是动态的。系统的持续变更使得风险和风险管理工作也在不断变化。

17. 一线人员持续维护系统安全

无故障运维是一线人员努力使系统保持在有效范围内的工作的成果。这些工作大多是看起来简单的日常运维。由于运维操作总是有风险的,一线人员对系统状态的调整实际上保障了系统安全。调整工作通常从经过演练的例行事务中选择,有时也会重新组合事务或建立新方法。

18. 无故障运维需要故障处置经验

识别风险并成功处置需要近距离接触故障。提高系统稳定性需要一线人员能够识别临界条件。此时系统状态开始变差,运行情况难以预测,或者无法快速恢复。在复杂系统中,一线人员需要全面评估处置故障,保障系统整体稳定。要提高安全性,需要为一线人员提供故障标准,以及运维操作对系统影响程度的标准:这些操作让系统远离临界条件,还是更靠近临界条件?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/864397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

监控易监测对象及指标之:全面监测IBM Domino邮件服务器的关键指标

在现代企业通信中,IBM Domino邮件服务器以其稳定性和丰富的功能而备受青睐。为了确保邮件服务器的顺畅运行,对其各项性能指标进行全面监测至关重要。监控易作为一款高效的监控工具,为IBM Domino邮件服务器提供了一系列精细的监测指标。 首先&…

使用 BroadcastChannel 实现浏览器标签页之间的通信

在现代的 Web 应用程序中,有时需要在不同的浏览器标签页或窗口之间进行通信。为了实现这种通信,我们可以使用 BroadcastChannel 接口。BroadcastChannel 允许我们在同一浏览器上的不同上下文之间发送消息,包括不同的标签页、窗口或同一页面中…

华为:坚持实事求是的进行产品及技术创新

作为国内自主创新,尤其是产品和技术创新的标志性企业,华为值得国内企业借鉴的经验是多方面的,但如果一定要总结为一条的话,那就是——实事求是的自主创新。最近,华为任正非总裁的一个讲话以“实事求是的科研方向和二十…

全球首款搭载Google Gemini和GPT-4o的智能眼镜发布

智能眼镜仍然是一个尚未完全成熟的未来概念,但生成式人工智能的到来显著提升了这些设备的能力。Meta 的 Ray-Ban 智能眼镜被许多人视为当今最好的选择之一,而现在 Solos AirGo Vision 正在为其带来竞争,这款眼镜还集成了 Google Gemini 支持。…

生命在于学习——Python人工智能原理(3.1.1)

Python部分结束了,开始概率论部分 一、概率基本知识 1.1 事件与概率 1.1.1 事件的运算与关系 (一)基本概念 定义1 随机试验 如果一个试验满足如下条件: 在试验前不能断定其将发生什么结果,但可明确指出或说明试验…

浅聊JavaScript中的栈(stack)

前言 这篇文章结合leetcode题目讲解一下栈这种结构 第20题:20. 有效的括号 - 力扣(LeetCode) 第LCR-147题LCR 147. 最小栈 - 力扣(LeetCode) 栈(stack) 在讲解题目之前,我们先来…

HTTPS是什么?原理是什么?用公钥加密为什么不能用公钥解密?

HTTPS(HyperText Transfer Protocol Secure)是HTTP的安全版本,它通过在HTTP协议之上加入SSL/TLS协议来实现数据加密传输,确保数据在客户端和服务器之间的传输过程中不会被窃取或篡改。 HTTPS 的工作原理 客户端发起HTTPS请求&…

primetime中cell和net的OCV

文章目录 前言一、Cell OCV1. POCV coefficient file2. POCV Slew-Load Table in Liberty Variation Format(LVF lib) 二、Net OCV三、如何check OCV是否已加上?总结 前言 在生产中,外界环境的各种变化,比如PVT&#…

4、DDD、中台和微服务的关系

DDD、中台和微服务的关系 1 DDD和中台的本质 领域驱动设计(DDD)和中台在企业架构中有着密切的关系。DDD的本质在于通过对业务领域的深入分析和建模,构建高内聚、低耦合的系统。而中台则是对企业核心业务能力的抽象和封装,以实现…

中英双语介绍美国常春藤联盟( Ivy League):八所高校

中文版 常春藤联盟简介 常春藤联盟(Ivy League)是美国东北部八所私立大学组成的高校联盟。虽然最初是因体育联盟而得名,但这些学校以其学术卓越、历史悠久、校友杰出而闻名于世。以下是对常春藤联盟的详细介绍,包括其由来、成员…

统一 REST 接口规范:提升低代码平台研发效率

1.背景 在一个低代码研发团队的办公室里,大家正忙碌着。小张在调试组件,小李在优化性能,小王则在制定新项目的技术方案。 这时,团队负责人小刘走进来,对大家说:“我们需要聊聊 REST 接口规范的问题。”他指…

C语言之线程的学习

线程属于某一个进程 共同点:都能并发 线程共享变量,进程不共享。 多线程任务中,其中某一个线程调用了exit了,其他线程会跟着一起退出 如果是特定的线程就调用pthread_exit 失败返回的是错误号 下面也是

企业为何要进行互联网收口

互联网收口又被称为网络出口收敛或网络出口整合,顾名思义,是通过技术手段将多个网络出口合并为一个或少数几个出口的过程,以优化网络性能、提高安全性和降低运营成本。在本文中,我们将深入探讨企业互联网收口的重要性,…

代码随想录-Day44

322. 零钱兑换 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数…

科普文:一文搞懂jvm原理(三)执行引擎

概叙 科普文:一文搞懂jvm(一)jvm概叙-CSDN博客 科普文:一文搞懂jvm原理(二)类加载器-CSDN博客 前面我们介绍了jvm,jvm主要包括两个子系统和两个组件: Class loader(类装载器) 子系统,Execution engine(执行引擎) 子系…

16_C语言编程基础

目录 C语言入门 程序段和代码段 C语言入门实例 英文分号(;) 注释 标识符 保留字 C中的空格 C数据类型 基本类型 sizeof获取存储字节 void类型 变量 C数组 C枚举 C中的左值(lvalue)和右值(rvalue) C常量 变量存储类型 C常用关键字(保留字) 宏定义#define co…

Codeforces Round955 (Div2)--(A~D)题解

Problem - A - Codeforces 思路&#xff1a;如果领先方互换&#xff0c;那么“NO”&#xff0c;否则“YES”。 void solve(){ Aint x1,y1; cin>>x1>>y1;int x2,y2; cin>>x2>>y2;if(x1>y1&&x2>y2||x1<y1&&…

生成式AI:未来商业的变革者

在2023年&#xff0c;生成式人工智能&#xff08;GenAI&#xff09;的浪潮席卷了全球&#xff0c;成为科技领域最炙手可热的话题之一。它不仅改变了我们与机器的互动方式&#xff0c;更在商业创新和生产力提升方面发挥了巨大的作用。本文将深入探讨2024年生成式AI的应用模式、趋…

【git】存在git LFS文件时如何处理

目录 1. 安装 Git LFS2. 初始化 Git LFS3. 跟踪大文件4. 添加和提交文件5. 克隆和拉取包含 LFS 文件的仓库 1. 安装 Git LFS 首先&#xff0c;你需要在你的系统上安装 Git LFS。你可以使用以下命令来安装&#xff1a; 在 Linux 上 # 对于基于 Debian 的系统 (如 Ubuntu) sud…

k8s 离线部署一个busybox,进而创建cronjob执行任务

首先创建一个yaml&#xff0c;创建一个名字是busybox-test的容器 apiVersion: v1 kind: Pod metadata:name: busybox-testlabels:purpose: demonstrate-busybox spec:containers:- name: busyboximage: busyboximagePullPolicy: IfNotPresentcommand:- sleep- "3600"…