Surfing Complexity

RSS: https://surfingcomplexity.blog/feed/
Lorin Hochstein 关于软件、复杂系统和事故的博客。

关于GitHub Actions 8月26日事件的简要思考

<p>上周,.正如GitHub公开报道的典型内容,事件发生后不久就发布了,但细节也不多。不过我们来看看能从中获得什么信息。</p><h2>数据库饱和</h2><p>我首先注意到的是,这次事件再次是与系统饱和相关的故障模式。具体来说,是因为写入流量导致数据库过饱和。</p><blockquote>这种影响是由服务处理触发器主要用于Actions工作流的数据库写入次数饱和引起的。</blockquote><p>正如我在与数据库相关的饱和问题尤其严重,因为它们很难恢复。</p><h2>有多位贡献者,但细节不多</h2><p>报道提到了七个导致事件的因素。</p><ul> <li>峰值日负载不断增加(这增加了对数据库的写入量)</li> <li>GitHub事件处理基础设施的上游问题(?),进一步增加了负载</li> <li>从主节点切换到副本并未实现完全恢复(?)</li> <li>现有节气门设置得高出约10%,因此提供不足的过载保护</li> <li>有些作业在恢复后仍停留在队列/等待状态(?)</li> <li>另一个问题让一些工作在恢复后处于等待状态</li> <li>有个bug导致有些运行显示为队列,尽管它们已经失败了</li> </ul><p>我用(?)注释了贡献者,觉得报告里几乎没有提供任何细节。提到上游问题引用但另一个事件页面上完全没有任何细节。<br><br>页面上写着“一旦有详细的根本原因分析将立即发布”,所以也许我们会在接下来几天内获得更多关于这个问题的细节。</p><p>不过我最想知道的是数据库故障转移到底发生了什么。我们在介绍中只看到了这一句话:</p><blockquote> <em>初选失败,但系统未能完全恢复。</em> </blockquote><p>这里发生了什么?…</p>
评论点赞收藏31 天前

云软件中无处不在的可用性风险

<p>我利用这篇帖子整理了一些我在阅读关于重大云软件事件的文章后注意到的一些共同线索。作者<em>云软件</em>我指的是软件即服务(SaaS)(现在还有人说这个吗?在云端。这不仅适用于云服务提供商,但也适用于他们。</p><p>以下是本文主题的概述:</p><ul> <li>问题领域<ul> <li>饱和度<ul> <li>示例:数据库</li> </ul> </li> <li>网络(流量路由故障)<ul> <li>示例:DNS</li> </ul> </li> <li>安全性(拒绝有效访问)<ul> <li>示例:SSL 证书</li> </ul> </li> </ul> </li> <li>非标准的必要变更<ul> <li>缓解操作问题</li> <li>迁徙</li> </ul> </li> <li>本质复杂度的必增<ul> <li>可靠性子系统</li> <li>迁徙</li> </ul> </li> </ul><p>我把这些都认为是<em>无处不在的可用性风险</em>我认为这些问题从根本上是不可避免的,并且会在软件事故中持续到永远;或者至少,直到我自己在软件领域的职业生涯结束。</p><p>大多数重大事件大致归入三个领域:饱和、网络和安全。那么,我们先从这些开始。</p><h2>饱和度</h2><p><em>饱和度</em>这大概是我最常谈论的话题,两者都是以及其他地方(例如:该我为软件韧性基金会撰稿,我的在“软件应当可工作”会议上)。<br><br>该系统变为<em>饱和</em>当它达到极限时。这描述很普通,但极限其实很多!</p><h3>数据库</h3><p>许多重大事件都涉及系统组件以某种形式出现饱和。我个人最担心的是数据库饱和。这是因为从过载的生产数据库中恢复非常困难。此外,由于数据库系统极其复杂,甚至很难确定具体的性能问题是什么。<br><br>这就是为什么拥有内部数据库运营专业知识至关重要。</p><p>饱和是一个无处不在的风险,因为资源的有限性是我们所生活的世界里的一个硬性限制。最终,你系统中的某些资源会…</p>
评论点赞收藏31 天前

GitHub 又遭遇严重故障:一次部署如何引发 9 小时级联宕机

GitHub Actions 在 8 月 6 日因一次常规部署触发级联故障,宕机约 9 小时。部署本身会减少可用 pod 数量,当系统已接近容量上限时,这种"部署态"会让系统越过临界点,发生脆性崩溃。 GitHub 的公开报告缺少恢复细节,但提到一个潜伏 bug 让 runner 卡在无效任务上,进一步加剧了问题。文章最后指出 GitHub 开始重视快速恢复能力,而不仅仅是预防。
评论点赞收藏47 天前

Traditional versus resilience engineering views

As a fan of resilience engineering, I often differ with people on where we should focus our scarce engineering cycles in order to improve reliability. I thought it would be a useful exercise to brains...
评论点赞收藏58 天前

用 TLA+ 将 MVCC 扩展为可串行化

基于 Michael Cahill 等人的论文,使用 TLA+ 形式化验证将 MVCC 扩展为可串行化快照隔离(SSI)。文章详细推导了导致非串行化的“枢轴事务”与反依赖环,并通过 TLC 模型检查器生成具体追踪案例,演示了如何在读操作和提交阶段动态检测并中止冲突事务。 包含完整的 TLA+ 代码模块扩展细节与精炼映射验证过程。
评论点赞收藏72 天前

综合比分析更难

文章指出在数学、逻辑学和计算机科学领域,综合(Synthesis)往往比分析(Analysis)更难。作者以 Lambda演算和关系演算为例,说明构建系统比理解现有系统更具挑战性。 这一观点反映了工程实践中的普遍现象,即从需求到实现的创造过程,通常比逆向工程或理论推导更为复杂和困难。
评论点赞收藏88 天前

我担心未来会出现全由LLM撰写的事故报告

作者对完全由大语言模型编写的事故报告未来表示担忧。他认为这种自动化趋势可能掩盖真正的问题,降低复盘质量。 事故复盘需要深刻的人类洞察和责任感,而不仅仅是文本生成。 LLM 生成的报告可能缺乏对根本原因的深入挖掘。
评论点赞收藏101 天前

致研究人员专栏:软件从业者的视角

介绍《系统与软件杂志》开设的“致研究人员”专栏。该专栏由业界从业者撰写,以公开信形式向软件工程学术界发声,旨在弥合学术研究与工业实践之间的鸿沟。
评论点赞收藏105 天前

我无法忍受阅读 AI 生成的散文

作者明确表示,虽然日常使用 ChatGPT 和 Claude 等工具查询具体问题,但他拒绝阅读他认为由 AI 生成的文章或散文。 这种区分基于对“问答辅助”与“创造性表达”的不同态度,反映了部分技术用户对 AI 生成内容在文学性或深度思考层面的排斥。
评论点赞收藏115 天前

形式追随功能,但使用并不追随设计:GitHub 稳定性危机引发的迁移潮

Mitchell Hashimoto 因 GitHub 近期频繁的可用性故障,决定将 Ghostty 项目迁移出 GitHub。他在一个月期间记录了每次服务中断的情况,以此作为迁移的直接动因。 这一举动反映了开发者社区对 GitHub 垄断地位及其服务稳定性的日益不满。文章探讨了在基础设施依赖与自主可控之间,用户如何重新评估平台选择。
评论点赞收藏127 天前

可靠性:一场提升胜率的博弈

作者将可靠性工程与概率论结合,提出可靠性本质上是提升成功几率的游戏。文章通过类比赌博中的赔率概念,重新审视系统稳定性的衡量方式。 这种视角为传统工程问题提供了新的思维框架,有助于理解复杂系统中的不确定性管理。
评论点赞收藏128 天前

从事故中看清系统已有的优势

文章利用著名的视觉错觉图作为隐喻,阐述在事故复盘或系统分析中,我们往往容易聚焦于“哪里出了问题”,却忽略了系统中原本已经运行良好的部分。 作者主张通过逆向视角,从事故中识别出那些成功抵御了风险、保持稳定的机制。这种分析方法有助于团队发现现有的韧性来源,而不仅仅是寻找故障点。
评论点赞收藏150 天前

创造可靠性的日常工作

文章介绍“Safety-II”理念,认为日常工作中防止事故发生的成功适应才是常态。 建议关注这些“没出事”的工作,而非只盯着故障复盘。
评论点赞收藏156 天前

评 GitHub CTO 关于可用性的博文:故障复盘与弹性工程思考

作者深入分析了 GitHub CTO 关于近期可用性问题的博文,拆解了三次故障的技术细节。 文章指出了缓存 TTL 调整与流量激增叠加导致的数据库过载,以及自动化故障转移机制引发的意外安全策略阻断。 作者强调在可靠性工程中,除了依赖自动化,必须为运维人员保留手动干预的灵活性。这种对“弹性工程”和“人为容错空间”的探讨,对架构师极具参考价值。
评论点赞收藏162 天前

无法逃避阿什比定律:为什么自动化系统总会失效

文章以“手顶扫帚”为例,解释控制论中的“必要多样性定律”,即控制系统必须具备与被控对象同等甚至更多的状态处理能力。 在软件工程中,这意味着我们构建的基础设施很难覆盖所有未知故障场景,因为人类无法想象未来可能出现的所有状态。
评论点赞收藏170 天前

AI SRE工具泛滥,但缺乏真正的AI事故管理能力

作者指出当前AI SRE工具多聚焦于故障诊断与修复,却忽视了关键的“事故管理”协调工作。 事故处理需要多人协作以克服“思维定势”,维持团队共同认知。 现有工具缺乏主动协调能力的深入讨论。
评论点赞收藏184 天前

增长过快导致系统过载:AI 巨头可靠性困境解析

文章对比了 OpenAI 和 Anthropic 的可靠性数据,指出其服务大多未达到 99.9% 的稳定率。作者引用内部员工回应,认为问题并非源于开发速度快,而是用户激增导致的服务过载。 文中引入韧性工程概念,解释这种因用户创新使用方式带来的不可预测负载增长。作者预测厂商将通过资源重分配和优雅降级来应对,但这将是长期挑战。
评论点赞收藏206 天前

Cloudflare 2月20日故障的快速复盘与深度观察

作者深入分析了 Cloudflare 2月20日故障的根本原因:旨在提高可靠性的自动化脚本因逻辑缺陷误删了活跃前缀。文章探讨了自动化运维中的风险与两难困境。 作者特别关注故障恢复阶段工程师的具体操作细节,指出不同客户受影响方式各异,需要复杂的数据恢复步骤。这种对工程实践和人为因素的细致观察,极具技术参考价值。
评论点赞收藏220 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。