由于软件部署不当,Cloudflare 发生 CPU 耗尽故障

2019 年 7 月 03 日

由于软件部署不当,Cloudflare 发生 CPU 耗尽故障

7 月 2 日,全球内容传递网络 CDN 加速服务商 Cloudflare 出现故障,受该故障影响,许多网站出现了宕机,最明显的就是在访问时提示 502 错误,即当用户访问站点时,浏览器向托管页面的服务器发送请求,服务器可以接受请求,但无法完成请求。



图片来源:TechTudo,Cloudflare 下线,用户看到消息“502 Bad Gateway”


事故原因


故障发生之后,Cloudflare 针对此问题积极进行了修复,Cloudflare 首席执行官 Matthew Prince 表示此次宕机事件并非黑客攻击所引发的,而是服务器超载了,其在 Twitter 上写道:“由于 CPU 出现大幅飙升,导致主系统和备份系统崩溃。我们关闭导致 CPU 峰值的进程。服务在约 30 分钟内恢复正常。我们现在正在调查导致此次事故的根本原因。 ”


根据 Cloudflare 博客的描述,导致此次中断的原因是在新 Cloudflare WAF 托管规则的例行部署期间,在 Cloudflare Web 应用程序防火墙(WAF)中部署了一个配置错误的规则。


新规则的目的是改进阻止攻击中使用的内联 JavaScript,并以模拟模式进行部署,在这种模式下,新规则会识别并记录问题,但实际上不会阻止任何客户流量,因此我们可以测量假阳性率,并确保新规则在部署到完整生产环境中时不会出现问题。


但不幸的是,其中一个规则包含了一个正则表达式,导致 Cloudflare 全球机器上的 CPU 峰值达到 100%,而这 100%的 CPU 峰值导致了前面客户看到的 502 错误。在最糟糕的时候,流量下降了 82%。



一个 POP 中的 CPU 峰值


在我们所知道的所有反向代理服务网站中,有 78.9%在使用 Cloudflare。如果我们再把范围扩大到所有网站,全球有9.6%的网站在使用 Cloudflare 的服务。因此,Cloudflare 此次事故影响范围十分广泛,印度、菲律宾、塞尔维亚、巴西、巴基斯坦和伊拉克等全球多个地区都遭遇了服务器错误。还有媒体报道称,Cloudflare 的名字目前已经排在了 Twitter 的全球趋势话题中的第二位。


Cloudflare 官方博客公布的受影响地区名单:



Cloudflare 十周年之际遇故障


Cloudflare 是一家成立于 2009 年的互联网性能和安全公司,2019 年 Cloudflare 称除了 75 个国家的 175 个数据中心之外,还向超过 1600 万个域、站点、API、移动应用程序和任何连接到互联网的东西提供服务,网络容量为 30Tbps。


6 月 24 日,Cloudflare 就已经发生过一次故障。当时的起因是宾夕法尼亚州的一家小型 ISP AS33154 - DQE Communications 使用 Noction 的 BGP 优化器优化其内部网络的路由,由于错误配置,向客户 Allegheny 宣布了特定的路由信息,然后这些路由信息又发给了转运服务商 Verizon,而 Verizon 不加甄选的接受了路由公告,导致流量路由经过了一家小型 ISP,导致了包括亚马逊、Cloudflare 和 Facebook 等公司的服务无法访问。


故障发生时,Cloudera 正在庆祝十周年生日,随后 Cloudflare 发布声明称:“今天早些时候,大范围的 BGP 路由泄漏影响了许多 Internet 服务和 Cloudflare 的一部分流量。Cloudflare 的所有系统继续正常运行,但我们的一部分域的流量无法到达我们。此时,网络中断已修复,流量级别恢复正常。”


据了解在 6 月 24 日发生的事故中,受影响的公司包括播客应用程序 Overcast、聊天服务 Discord、托管服务提供商 WP Engine、电子商务托管服务商 Sonassi、公共网络前端 CDN 服务 CDNJS,以及其它依赖网络托管或者是与 Cloudflare 合作提供其 CDN 服务的网站,比较讽刺的是,用于检查 Web 服务中断的 DownDetector 站点也受到了影响。


2019 年 7 月 03 日 14:0214352
用户头像
田晓旭 InfoQ 编辑

发布了 414 篇内容, 共 192.3 次阅读, 收获喜欢 1224 次。

关注

评论

发布
暂无评论
发现更多内容

学习的深度 & 深度的学习

北风

学习

程序范式的意义

soolaugust

架构 程序设计

大厂面试必读,JAVA进阶神书《深入理解Java虚拟机》第三版更新内容全曝光!

华章IT

JVM 虚拟机 周志明 Java虚拟机 jvm调优

nginx报错worker_connections are not enough

Java联盟

nginx

云上安全工作乱如麻,等保2.0来一下

华为云开发者社区

安全 华为云 等保 云平台 多云服务

跨域问题(CORS / Access-Control-Allow-Origin)

xcbeyond

Java CORS 跨域

云原生架构的基石

soolaugust

Docker 架构 Kubernetes 容器 云原生

“庆俞年”大战,真正受损的不是李国庆

北柯

创业 合伙人 创业者 互联网人 当当网

草脸识别,AI泡沫还是皇冠明珠?

郭华

人工智能 AI 商业 解决方案

影响音视频延迟的关键因素(一):流媒体系统

ZEGO即构

TCP udp RTC HLS RTMP

ARTS week 4

锈蠢刀

SpreadJS 纯前端表格控件应用案例:集成 Odoo提升企业ERP表格功能

Geek_Willie

开源 SpreadJS Odoo

搭载十代酷睿i7处理器,这台ROG冰刃4新锐拥有媲美台式游戏电脑的性能

飞天鱼2017

Spring 为啥默认把bean设计成单例的?这篇讲的明明白白的

程序员生活志

nginx 报错 accept4 () failed (24:Too many open files)

Java联盟

nginx

为啥PHP in_array(0,['a', 'b', 'c']) 返回为true?

flyer0126

php 弱类型语言

我的敏捷历程 —— 兼评《敏捷整洁之道 - 回归本源》

FollowFlow

敏捷开发 Agile 极限编程 XP

写代码爬取了某 Hub 资源,只为撸这个鉴黄平台!

程序员生活志

教程 Hub 资源

丐帮,少林,明教,武当!看看你数据分析的技能属于哪一派?

程序员生活志

为什么一旦自己创业了,很难再回到公司去坐班?

北柯

创业 互联网 创业心态 上班 上班族

"工科生"的浪漫 百度大脑语言与知识技术峰会在七夕向你发出参会邀请

百度大脑

ST在keil下开发时候文件options配置的一些小技巧

良知犹存

嵌入式

Python3 for ... else ...陷阱

王坤祥

Python Python PEP

错误的存储方案正吞噬你的成本

jinjin

一个虚拟世界里栽树的公司及其启示

郭华

技术 商业模式 电影

一个数据库管理员的自我救赎之路

华为云开发者社区

数据库 华为云 数据库迁移 企业上云 DRS

区块链承兑商支付系统开发,usdt支付系统搭建

WX13823153201

高效程序员的45个习惯:敏捷开发修炼之道(3)

石云升

读书笔记 敏捷开发 无限游戏

spring Cloud Eureka Rest接口重写

xcbeyond

Java SpringCloud Eureka

系统不可用总结

不在调上

CRM往事丨三件事,所有SaaS的缩影

人称T客

由于软件部署不当,Cloudflare 发生 CPU 耗尽故障-InfoQ