在 2025 年 9 月 12 日,Cloudflare 遭遇了长达一个多小时的全球宕机。但令人惊讶的是,罪魁祸首并不是黑客攻击,而是他们自己前端代码的一个小错误。
事情经过
- Cloudflare 的管理后台使用 React 开发。
- 在代码中,一个 useEffect 钩子的依赖数组写入了「每次渲染都会新建的对象」。
- React 认为依赖值不停变化,于是不断触发 useEffect,从而疯狂调用 Cloudflare 的 Tenant Service API。
- 这个 API 负责验证和授权,是核心服务。结果被前端自己轰炸,导致后端资源被耗尽。
换句话说,本来只是个「多敲一次门」的小 bug,却演变成无数只手同时在狂按门铃,最后直接把自家电路烧了。
后果与修复
- 这次事故导致全球用户无法正常使用 Cloudflare 的部分功能。
- 因为表面看起来像 API 自己出问题,所以排查过程一度受阻。
- 事后,Cloudflare:
- 扩大了 Tenant Service API 的容量;
- 增强了监控手段,能区分「新请求」与「重试」;
- 调整了前端代码审查流程,以避免类似 bug。