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.com
和 deno.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倍。我们的系统最初通过拒绝受影响域的请求并进行扩容来响应。由于攻击量巨大,大量处理节点需要同时上线。这些节点中的每一个都需要从中央数据库拉取少量元数据。不幸的是,我们的数据库无法处理随之而来的查询负载,导致一些节点上线速度远低于预期,而另一些节点则在等待启动负载时超时并随后自行重启,这进一步加剧了数据库的负载。
下一步是什么?
我们正在采取一些措施来防止未来再次发生此问题:
- 中央数据库的处理能力已显著提高。
- 启动负载将在全球范围内进行缓存,以消除对中央数据库的单点故障依赖。
- 如果由于任何原因无法获取最新启动负载,处理节点将被允许使用(略微)陈旧的数据进行操作。
- 在未来几周内,我们将进行额外的负载测试,以确保我们的系统能够承受本次事件中观察到的突然负载高峰。
有任何问题、建议或其他想法?请随时联系我们。