谷歌近日解释了上周谷歌云大规模崩溃的方式和原因,这种情况对该公司来说已是家常便饭。

谷歌云众多产品崩溃:神秘的元数据异常淹没了谷歌的 blob-冯金伟博客园
谷歌云众多产品崩溃:神秘的元数据异常淹没了谷歌的 blob-冯金伟博客园

谷歌云众多产品崩溃:神秘的元数据异常淹没了谷歌的 blob-冯金伟博客园

谷歌云众多产品崩溃:神秘的元数据异常淹没了谷歌的 blob-冯金伟博客园

谷歌云众多产品崩溃:神秘的元数据异常淹没了谷歌的 blob-冯金伟博客园

谷歌云众多产品崩溃:神秘的元数据异常淹没了谷歌的 blob-冯金伟博客园

  详细说明故障根本原因的谷歌云问题摘要:一开始解释“许多谷歌服务针对不可变的非结构化数据(又叫作二进制大对象即 Blob)使用一种通用的内部分布式系统。该 Blob 存储系统包含与谷歌内部客户服务连接的前端、处理元数据操作的中间层以及面向 Blob 本身的后端存储。当客户向该前端发出请求时,元数据操作转发到与存储服务进行联系的元数据服务。”

  有意思的是,它对谷歌的操作做了一些解释,却没有解释哪里出了岔子。

  下一段对此作了如下的描述:

来自另一项谷歌服务的流量增加开始使元数据服务不堪重负,导致任务变得不正常,并导致请求的延迟增加。而延迟增加促使这些操作过多地重试,因而导致资源耗尽。

  虽然一些任务可以启动,但许多任务“立即被它们收到的流量淹没其中,而成功启动的任务因资源耗尽而被分配了不足的资源。”

  由于“用于取消和重试失效请求的策略加剧了这个问题——这导致流量出现倍增效应”,由此开始出现了连锁反应。

  结果如何?故障时间长达 6 小时 35 分钟,具体时长取决于您使用哪种谷歌服务。

  但是值得关注的是,谷歌云存储的用户没有遇到任何异常,原因是虽然该产品依赖同样的 Blob 存储,但其元数据服务是隔离的。

  谷歌的团队写道:“GCS 元数据隔离的迁移对‘美国’多地区而言是日常性的,而所有其他迁移都已完成。因而,对 GCS 客户造成的影响有所减小,这种影响仅限于‘美国’多地区。”报告没有解释哪项谷歌服务导致了最初的元数据混乱,而最初的元数据混乱又导致了其他产品故障。谷歌当然承诺会修复所有出现异常的服务,并测试新的更可靠的例程以便在将来处理这种问题。

  该公司还异常详细地介绍了这次故障具体造成的后果,如下所示:

  • Gmail:一些用户无法正常使用 Gmail 服务,电子邮件发送延迟。过去 7 天内处于活跃状态的 Gmail 用户(包括消费者和 G Suite)中约 0.73% 在故障期间遇到了 3 个或更多的可用性错误。G Suite 客户占受影响的 Gmail 用户总数的 27%。此外,一些用户向邮件添加附件时遇到了错误。到 03 点 30 分已消除了 Gmail 受到的影响,因该事件延迟的所有邮件均已成功发送。

  • Drive:一些谷歌 Drive 用户遇到了错误,延迟时间增加。过去 24 小时内处于活跃状态的 Drive 用户(包括消费者和 G Suite)中约 1.5% 在故障期间遇到了 3 个或更多的错误。

  • Docs 和 Editors:一些谷歌 Docs 用户在执行图片创建操作(比如上传图片、拷贝含有图片的文档或使用含有图片的模板)时遇到了问题。

  • New Google Sites:一些用户无法创建新的 Sites、无法向 Sites 添加新页面或无法将图片添加到 Sites。此外,故障期间利用模板创建 Sites 的错误率几乎达到 100%。到 03 点 00 分已消除了 Sites 受到的影响。

  • Chat:尝试发送邮件的谷歌 Chat 用户中2% 遇到了错误,而尝试将邮件转发到 Gmail 的 Chat 用户中 16% 遇到了错误。

  • Meet:故障期间,直播完全中断;由于 YouTube 受影响,录制出现延迟。Meet 受影响的时间从 21 点 00 分持续到 01 点 15 分,并从 01 点 40 分持续到 02 点 10 分。

  • Keep:一些谷歌 Keep 用户收到了 500 内部服务器错误响应,或者涉及媒体的操作遇到了延迟。

  • Voice:一些带有附件的出站 SMS 消息传送失败。一些入站语音邮件、呼叫记录和 SMS 的传送出现延迟。到 03 点 20 分消除了语音受到的影响。所有语音邮件和录音已成功发送,最长延迟 5.5 个小时。

  • Jamboard:一些用户试图上传图片或拷贝含有图片的文档时遇到了错误。

  • Admin Console:一些用户在 G Suite Admin Console(管理控制台)中上传 CSV 文件时遇到了错误。这些操作在故障期间的错误率在 15% 到 40% 之间。

  • App Engine:调用 Blobstore API 的 App Engine Standard 应用程序的错误率上升。在大多数地区,峰值错误率低于5%,但在 us-west1 峰值错误率高达 47%,us-central1 也有 13%。调用 Images API 的 App Engine Standard 应用程序的错误率更是高达 66%。

    静态文件或 Blobstore 对象提供服务的入站 HTTP 请求错误增加,峰值错误率为1%。

    含有静态文件的应用程序部署失败,附有消息“将文件复制到 App Engine 时发生以下错误:文件 https://storage.googleapis.com/….失败,原因:无法保存静态文件。”到 03 点 25 分消除了 App Engine 受到的影响。

  • Cloud Logging:写入到 Google Cloud Logging(谷歌云日志)的日志消息(包括谷歌生成的日志,比如 App Engine 请求日志、活动日志和审核日志)延迟时间长达 4 小时 43 分钟。积压的日志到 16 点 00 分才完全处理完毕。故障期间,写入和读取日志的 API 调用成功返回,但读取返回的结果不完整。

  • Cloud Storage:针对位于“美国”多地区的 Google Cloud Storage(谷歌云存储)存储桶的 API 调用出现的错误率高达1%。到 00 点 31 分错误完全消除。