跳到主要内容

九月 23 日事件更新

在周四 UTC 时间 3:11,Deno 公司提供的几项服务发生了 35 分钟的服务中断。在此期间,托管在 Deno Deploy 上的项目和 deno.land 网站均无响应。我们已得出结论,此次中断是由意外的数据库维护事件引起的。这篇文章详细介绍了究竟发生了什么,我们如何恢复系统,以及我们正在采取哪些措施来防止将来再次发生这种情况。

所有服务现在都已恢复正常运行。没有数据丢失。我们非常重视此类中断,并对由此造成的不便表示诚挚歉意。

事件时间线

UTC 时间 3:11,托管在 Google Cloud Platform 上的主 Postgres 数据库启动了一个意外的维护事件。

UTC 时间 3:13,一个自动警报触发,指示对 deno.land/std 的请求失败。

UTC 时间 3:32,数据库维护完成,但以未知故障状态结束。

UTC 时间 3:48,由于之前的故障,数据库服务器自动重启,警报被清除。

根本原因

Deno Deploy 有一个托管在 Google Cloud Platform 上的主 Postgres 数据库。此数据库用于存储 Deno Deploy 运行其服务所使用的各种数据。此数据库以高可用性方式设置,并且可以在主数据库发生故障时故障转移到备用副本。

UTC 时间 3:11,Google Cloud Platform 在主 Postgres 数据库上启动了一个意外的维护事件。在维护事件期间,无法进行故障转移。这意味着主数据库无法进行读取和写入,导致访问此数据库的 Deno Deploy 服务失败。

维护事件结束后,数据库服务器自动重启,所有使用主数据库的服务都能够恢复。

影响

在这 35 分钟的窗口期内,对 Deno Deploy 项目的请求失败,包括对 deno.land/x 和 deno.land/std 的请求。尝试从 /x 或 /std 下载模块的 Deno 程序遇到故障。Deno Deploy 管理仪表板 https://dash.deno.com/ 和 Deno Deploy GitHub 集成也无法使用。

下一步是什么?

我们正在与 GCP 联系,以确定此维护事件的根本原因,以及数据库服务器恢复如此缓慢的原因。作为临时措施,我们已暂停计划的数据库维护,直到我们确定永久解决方案以防止此类中断。此外,我们正在研究使我们的服务更能抵抗主数据库故障的解决方案。