跳到主要内容
Deno 2.4 现已发布,带来 deno bundle、字节/文本导入、稳定版 OTel 等更多功能
了解更多

2023年6月25日 Deno Deploy 事后复盘

2023年6月25日世界协调时09:42,Deno Deploy 的大部分服务经历了服务中断,直到大约世界协调时10:26(44分钟)。在此期间,用户无法访问托管在 Deno Deploy 上的项目,无法访问 Deno 网站资产(如 deno.com),也无法下载托管在 deno.land 上的模块。

使用 Deno Deploy 子托管服务的客户未受此次中断影响。

我们致力于为用户提供稳定可靠的平台,这是我们的首要任务。我们对此事件深表遗憾,并真诚地为因此造成的任何中断致歉。本报告概述了该事件、中断原因以及我们计划采取的措施,以防止未来再次发生此类情况。

影响

在这44分钟内,用户经历了服务中断,无法访问 Deno Deploy 上的关键 Deno 网站资产和部署,包括 deno.comdeno.land

事件时间线

以下均为世界协调时,2023年6月25日。

  • 09:42 - DDOS 攻击开始
  • 09:43 - 警报触发,团队接到通知
  • 09:46 - 团队成员上线查找根本问题。
  • 09:47 - 日志显示数据库查询受到限速。
  • 10:14 - DDOS 攻击结束
  • 10:26 - 所有警报解除。我们的大部分系统已恢复。
  • 11:02 - 事件标记为已解决。

我们估计从系统首次出现故障到完全恢复,停机时间约为44分钟。

根本原因

6月25日星期日,Deno Deploy 上托管的一个网站资产遭受了 DDOS 攻击。在此期间,我们观察到请求速率比平时高出约10倍。我们的系统最初通过拒绝受影响域的请求并进行扩容来响应。由于攻击量巨大,大量处理节点需要同时上线。这些节点中的每一个都需要从中央数据库拉取少量元数据。不幸的是,我们的数据库无法处理随之而来的查询负载,导致一些节点上线速度远低于预期,而另一些节点则在等待启动负载时超时并随后自行重启,这进一步加剧了数据库的负载。

下一步是什么?

我们正在采取一些措施来防止未来再次发生此问题:

  • 中央数据库的处理能力已显著提高。
  • 启动负载将在全球范围内进行缓存,以消除对中央数据库的单点故障依赖。
  • 如果由于任何原因无法获取最新启动负载,处理节点将被允许使用(略微)陈旧的数据进行操作。
  • 在未来几周内,我们将进行额外的负载测试,以确保我们的系统能够承受本次事件中观察到的突然负载高峰。

有任何问题、建议或其他想法?请随时联系我们