2023年6月25日 Deno Deploy 事后分析
2023年6月25日,UTC时间09:42,大部分 Deno Deploy 服务经历了服务中断,持续到大约 UTC时间10:26(44分钟)。在此期间,用户无法访问托管在 Deno Deploy 上的项目,访问 Deno Web 属性(如 deno.com),或下载托管在 deno.land
上的模块。
使用 Deno Deploy 子托管的客户未受此次中断的影响。
我们致力于为用户提供稳定可靠的平台,这是我们最优先的事项。对于此次事件以及造成的任何中断,我们深感抱歉并真诚道歉。本报告概述了事件、中断原因以及我们计划采取的措施,以防止未来再次发生此类情况。
影响
在44分钟的时间内,用户经历了服务中断,无法访问关键的 Deno Web 属性和 Deno Deploy 上的部署,包括 deno.com
和 deno.land
。
事件时间线
所有时间均为 UTC 时间,2023年6月25日。
- 09:42 - DDOS 攻击开始
- 09:43 - 警报被触发,团队收到通知
- 09:46 - 团队成员上线以查找根本问题。
- 09:47 - 日志表明数据库查询受到速率限制。
- 10:14 - DDOS 攻击结束
- 10:26 - 所有警报均已解决。我们的大部分系统已恢复。
- 11:02 - 事件标记为已解决。
我们估计从系统首次开始故障到完全恢复之间,停机时间约为 44 分钟。
根本原因
在 6 月 25 日星期日,针对托管在 Deno Deploy 上的一个 Web 属性发起了一次 DDOS 攻击。在此期间,我们看到的请求速率比正常时段高出约 10 倍。我们的系统对此的响应是最初拒绝访问受影响域名的请求,并通过扩展来应对。由于攻击量巨大,必须同时启动大量处理节点。这些节点中的每一个都需要少量元数据,这些元数据从中央数据库中提取。不幸的是,我们的数据库无法处理与此相关的查询负载,这导致一些节点上线速度远低于预期,而另一些节点在等待启动有效负载时超时并随后重启,这进一步加剧了数据库的负载。
下一步是什么?
我们正在采取一些措施以防止将来出现此问题
- 中央数据库的处理能力已显著提高。
- 启动有效负载将在全球范围内缓存,以消除对中央数据库的单点故障依赖。
- 处理节点将被允许在(略微)陈旧的数据上运行,以防最新的启动有效负载因任何原因而不可用。
- 在未来几周内,我们将进行额外的负载测试,以确保我们的系统能够承受我们在本次事件中看到的突发负载峰值。
有任何问题、建议或其他想法吗?请随时给我们留言。