Cloudflare承认了一个编程错误,该错误涉及React useEffect钩子的使用不当,导致其平台仪表板和多个API出现超过一小时的服务中断。
这次故障发生在9月12日,持续了一个多小时。据工程副总裁Tom Lianza介绍,故障由仪表板中的一个错误触发,该错误导致"对租户服务API的重复、不必要调用"。这个API是API请求授权逻辑的一部分,因此影响了其他API的正常运行。
问题的排查过程相当困难,因为表面上看起来是API可用性问题,掩盖了实际上是仪表板过载API的事实。
Lianza表示,核心问题出在React useEffect钩子中,其"依赖数组中包含一个有问题的对象"。useEffect钩子是一个包含多个参数的函数,包括返回清理函数的设置函数和可选的依赖项列表。每当依赖项发生变化时,设置函数就会运行。
在Cloudflare的这个案例中,该函数会调用租户服务API,而其中一个依赖项是一个"在每次状态或属性变化时都会重新创建"的对象。结果是,在仪表板的单次渲染过程中,该钩子反复运行,而原本设计只运行一次。函数运行频率过高,导致API过载,引发服务中断。
useEffect钩子功能强大但经常被过度使用。相关文档充满了关于误用和常见错误的警告,并鼓励在可能的情况下使用其他方法。useEffect的性能陷阱很常见。
这一事件在社区中引发了关于useEffect利弊的讨论。一位开发者在Reddit上表示,对useEffect的抱怨太多了,它是React的重要组成部分,"认为使用它是坏事的想法很愚蠢"。不过,另一种反应是"消息还没有被接收到。我认识的几乎每个人都继续无缘无故地到处放置大量useEffect"。
还有人评论道:"真正的问题是API因过量API调用而宕机...在一家拥有专门服务来防止DDoS(分布式拒绝服务)攻击的公司中。"
Lianza表示,租户服务没有分配足够的容量来"处理这样的负载峰值",现在已经为其分配了更多资源,并改进了监控。此外,从仪表板发出的API调用中添加了新信息,以区分重试和新请求,因为如果团队知道看到的是"大量新请求,就更容易将问题识别为仪表板中的循环"。
Q&A
Q1:什么是React useEffect钩子?为什么会导致问题?
A:React useEffect钩子是一个包含设置函数和依赖项列表的函数,每当依赖项变化时就会运行。在Cloudflare的案例中,依赖数组中的对象在每次状态变化时都被重新创建,导致钩子在单次渲染中反复运行,原本只应运行一次。
Q2:Cloudflare的这次故障具体是怎么发生的?
A:故障是由仪表板中的useEffect钩子错误引起的,该钩子对租户服务API进行了重复、不必要的调用。由于API调用频率过高,导致API过载,进而影响了其他依赖该API的服务,造成超过一小时的服务中断。
Q3:Cloudflare采取了哪些措施来防止类似问题再次发生?
A:Cloudflare为租户服务分配了更多资源以处理负载峰值,改进了监控系统,并在仪表板的API调用中添加了新信息来区分重试和新请求,这样可以更容易识别仪表板中的循环问题。
好文章,需要你的鼓励
在Meta Connect大会上,Meta展示了新一代Ray-Ban智能眼镜的硬件实力,配备神经腕带支持手势控制,电池续航翻倍,摄像头性能提升。然而AI演示却频频失败,包括Live AI烹饪指导、WhatsApp通话和实时翻译功能都出现问题。尽管Meta在智能眼镜硬件方面表现出色,但AI软件仍远未达到扎克伯格提出的"超级智能"目标。文章建议Meta考虑开放AI生态,允许用户选择其他AI服务商,这可能帮助Meta在AI硬件市场获得优势。
人民大学团队开发了Search-o1框架,让AI在推理时能像侦探一样边查资料边思考。系统通过检测不确定性词汇自动触发搜索,并用知识精炼模块从海量资料中提取关键信息无缝融入推理过程。在博士级科学问题测试中,该系统整体准确率达63.6%,在物理和生物领域甚至超越人类专家水平,为AI推理能力带来突破性提升。
英伟达同意以50亿美元收购英特尔股份,双方将合作开发多代数据中心和PC产品。英伟达将以每股23.28美元的价格收购约4%的英特尔股份,成为其最大股东之一。两家公司将通过NVLink接口整合各自架构,实现CPU和GPU间的高速数据传输。英特尔将为英伟达AI平台定制x86处理器,并开发集成RTX GPU的x86系统级芯片,用于消费级PC市场。
Anthropic研究团队开发的REINFORCE++算法通过采用全局优势标准化解决了AI训练中的"过度拟合"问题。该算法摒弃了传统PPO方法中昂贵的价值网络组件,用统一评价标准替代针对单个问题的局部基准,有效避免了"奖励破解"现象。实验显示,REINFORCE++在处理新问题时表现更稳定,特别是在长文本推理和工具集成场景中展现出优异的泛化能力,为开发更实用可靠的AI系统提供了新思路。