谷歌云服务大规模中断事件溯源,API 管理系统故障引发全球瘫痪

IT科技2025-11-05 09:31:244198

2025年6月12日,谷歌规模I管谷歌云(Google Cloud)遭遇近年来最严重的云服服务中断事件,其API管理系统出现关键故障,中断障引导致全球数十项服务瘫痪长达七小时。事件溯源此次事故源于服务控制(Service Control)二进制文件中出现的理系空指针异常,该组件负责管理API授权和配额策略,统故影响范围覆盖谷歌云平台(GCP)和Google Workspace产品的发全数百万用户。

二进制文件崩溃引发全球故障

故障根源在于谷歌的球瘫服务控制系统——这个区域性服务负责在基础设施中授权API请求并执行配额策略。2025年5月29日,谷歌规模I管工程师部署了新增配额策略检查功能,云服但相关代码既缺乏完善的中断障引错误处理机制,也未启用功能标志(feature flag)保护。事件溯源

危机爆发的理系直接原因是:包含意外空白字段的策略变更被写入服务控制系统依赖的区域性Spanner数据库表。由于配额管理具有全球同步特性,统故这些损坏的亿华云计算发全元数据在几秒内就完成了全球复制。当服务控制系统尝试处理这些空白字段时,触发了未受保护的代码路径,导致空指针异常,最终引发所有区域二进制文件同时进入崩溃循环状态。

"本次变更的根本问题在于既没有配置适当的错误处理机制,也没有启用功能标志保护。由于缺乏错误处理,空指针直接导致二进制文件崩溃。"谷歌在事故报告中解释道。

网站可靠性工程(SRE)团队在10分钟内定位到根本原因,并在40分钟内部署了"红色按钮"紧急终止开关,关闭问题服务路径。虽然大部分区域在两小时内恢复,但us-central1区域却遭遇持续性问题——当服务控制任务在这个主要区域重启时,对底层Spanner基础设施形成"羊群效应",海量并发请求导致数据库不堪重负。

工程师发现服务控制系统缺乏预防级联故障的随机指数退避机制。谷歌不得不限制任务创建,服务器租用并将流量路由至多区域数据库以减轻过载基础设施的压力。这一延长恢复过程影响了包括谷歌计算引擎(Compute Engine)、BigQuery、云存储(Cloud Storage)在内的核心服务,这些产品构成众多企业数字业务的基石。

整改措施

针对此次大规模服务中断,谷歌制定了全面整改方案:

立即冻结服务控制堆栈的所有变更和手动策略推送,直至系统完全修复对服务控制架构进行模块化改造,确保在个别检查失败时仍能保持API请求处理能力(故障开放而非关闭)全面审计所有使用全局复制数据的系统强制要求所有关键二进制变更必须启用功能标志保护

受影响服务超过60项,涵盖Gmail、Google Drive、Google Meet、App Engine、云函数(Cloud Functions)和Vertex AI等产品。谷歌强调现有流媒体和基础设施即服务(IaaS)资源仍保持运行,但客户在整个中断期间遭遇API和用户界面间歇性访问问题。

本文地址:http://www.bzve.cn/html/326d1399660.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

大多数 Linux 发行版都会提供一个可以从 USB 启动的 live 环境,以便用户无需安装即可测试系统。我们可以用它来评测这个发行版或仅仅是当成一个一次性系统,并且很容易将这些文件复制到一个 U 盘上,在某些情况下,我们可能需要经常运行同一个或不同的 ISO 镜像。GRUB 2 可以配置成直接从启动菜单运行一个 live 环境,而不需要烧录这些 ISO 到硬盘或 USB 设备。获取和检查可启动的 ISO 镜像当镜像下载完后,我们应该通过 MD5 校验检查它的完整性。这会输出一大串数字与字母合成的序列。将这个序列与下载页提供的 MD5 校验码进行比较,两者应该完全相同。配置 GRUB 2在下面的例子中,一个 Kubuntu 15.04 live 环境将被配置到 Ubuntu 14.04 机器的 Grub 启动菜单项。这应该能在大多数新的以 Ubuntu 为基础的系统上运行。假如你是其它系统并且想实现一些其它的东西,你可以从这些文件了解更多细节,但这会要求你拥有一点 GRUB 使用经验。这个例子的文件 kubuntu-15.04-desktop-amd64.iso 放在位于 /dev/sda1 的 /home/maketecheasier/TempISOs/ 上。为了使 GRUB 2 能正确找到它,我们应该编辑/etc/grub.d40-custom分析上述代码下一行是指定回环设备,且必须给出正确的分区号码。复制代码代码如下:GRUB 的命名在这里稍微有点困惑,对于硬盘来说,它从 “0” 开始计数,第一块硬盘为 #0 ,第二块为 #1 ,第三块为 #2 ,依此类推。但是对于分区来说,它从 “1” 开始计数,第一个分区为 #1 ,第二个分区为 #2 ,依此类推。也许这里有一个很好的原因,但肯定不是明智的(明显用户体验很糟糕)..在 Linux 中第一块硬盘,第一个分区是 /dev/sda1 ,但在 GRUB2 中则是 hd0,1 。第二块硬盘,第三个分区则是 hd1,3, 依此类推.下一个重要的行是:复制代码代码如下:最后复制代码代码如下:启动 live 系统复制代码代码如下:当重启系统后,应该可以看见一个新的、并且允许我们启动刚刚配置的 ISO 镜像的 GRUB 条目:选择这个新条目就允许我们像从 DVD 或 U 盘中启动一个 live 环境一样。

使用深度学习模型在 Java 中执行文本情感分析

你真的了解 Htap 吗?

Redis是否需要绑定CPU?

德国美诺吸尘器的性能和优势(高效清洁,品质卓越,可靠耐用)

域名可以转让买卖吗?

16个 Redis 常见使用场景

什么是个性化域名?

热门文章

友情链接

滇ICP备2023006006号-39