+− THE DAILY DIFFdev & AI news
SHIP IT

Google Cloud 在空白欄位上崩潰。三小時。

一個帶有幾個空白欄位的政策列導致空指標,Google Cloud 在所有區域同時崩潰 — 然後 Cloudflare 也隨之崩潰。

一個帶有幾個空白欄位的政策列導致空指標,Google Cloud 在所有區域同時崩潰 — 然後 Cloudflare 也隨之崩潰。2025 年 6 月 12 日,世界標準時間 17:49:Service Control 是核准每個 Google Cloud API 請求的二進位檔案,它讀取了一個帶有「非預期空白欄位」的配額政策變更,觸發了兩週前部署且沒有空值檢查和功能旗標的程式碼路徑,並在每個區域進入崩潰迴圈 — 該列在幾秒鐘內已全域複製。外部 API 返回 503 長達三小時;us-central1 耗時 2 小時 40 分鐘,因為重新啟動的任務衝擊同一個 Spanner 表,且沒有隨機退避。在 Google 服務中斷的三分鐘內,Cloudflare 的 Workers KV — 其真實來源位於「第三方雲端供應商」上 — 失去了 90% 的請求,並且 Access、WARP、Workers AI、Pages、Stream 和 Turnstile 也隨之停擺 2 小時 28 分鐘。Google 的狀態頁面延遲一小時才發布首次更新,因為它運行在 Google Cloud 上。

閱讀書面版(英文) ↗

本影片重點

  • 一個空白欄位,一個空指標,每個區域
  • 時間軸:5 月 29 日 → 17:45 → 崩潰迴圈 → 紅色按鈕 → 17:52 Cloudflare
  • us-central1:羊群效應
  • 機制:請求路徑中的檢查,全域複製,單一供應商
  • git blame — 分裂

翻譯文字稿

譯自英文原版旁白。可用的音訊和字幕由 YouTube 控制。

一個空白欄位,一個空指標,每個區域

0:00 一個帶有空白欄位的政策列導致空指標,Google Cloud 隨即在 每個區域崩潰 — 且 Cloudflare 也隨之停擺, 然後將 Google 稱為「第三方供應商」。 2025 年 6 月 12 日,世界標準時間 17:49。 Google 的報告:Service Control,核准每個 API 請求的二進位檔案, 進入崩潰迴圈達三小時。 同日晚間,Cloudflare 的報告:Workers KV,90% 的請求失敗, 持續兩小時二十八分鐘。

0:23 事件經過,為何一個空白欄位在幾秒內全球傳播, 以及誰該負責。 這是 The Daily Diff,事後檢討。 5 月 29 日。Service Control 獲得新的配額檢查,以區域為單位發布,附帶一個

時間軸:5 月 29 日 → 17:45 → 崩潰迴圈 → 紅色按鈕 → 17:52 Cloudflare

0:35 紅色按鈕 — 但新的程式碼路徑在發布期間從未運行;目前沒有任何東西觸發 它。沒有空值檢查。 沒有功能旗標。 17:45。一個帶有空白欄位的政策變更進入 Spanner 表格。 配額是全域性的,因此該行在幾秒鐘內複製到每個地方。 每個 Service Control 二進位檔案都讀取它,觸發空指標, 崩潰,重新啟動,再次讀取。 每個 API 呼叫:503。

0:55 Google 速度很快:兩分鐘內分類,十分鐘內找出根本原因。 紅色按鈕在四十分鐘內啟動,小型區域首先恢復。 狀態頁面在一小時後發布首次更新, 因為它運行在 Google Cloud 上。 17:52。Cloudflare 的 WARP 團隊發現新設備無法註冊。 Workers KV,Cloudflare 用於設定和身分驗證的一半儲存, 位於第三方雲端。 Access 失敗每個登入 — 根據設計,它會關閉失敗。

1:20 Workers AI 失敗每個推論。 19:11,Gergely Orosz:兩個獨立雲端同時停擺, 前所未見。 19:32,Google 支援告訴用戶沒有已知的中斷 — 嘗試清除 您的 cookies。其他所有地方在 19:48 前恢復。

us-central1:羊群效應

1:34 us-central1 沒有:重新啟動的任務衝擊同一個 Spanner 表, 沒有隨機退避,因此 Google 手動限制它們。 兩小時四十分。 一:政策檢查位於請求路徑內;當檢查失效時,

機制:請求路徑中的檢查,全域複製,單一供應商

1:46 API 也隨之失效。 二:配額資料在全球範圍內傳播,沒有分階段;一個壞的行就是一個全球性的行。 三:Cloudflare 知道。 Workers KV 正從一個供應商遷移到自己的 R2, 事後檢討稱之為覆蓋範圍的空白。

git blame — 分裂

2:00 git blame。Google,55%:沒有空值檢查,沒有功能旗標, 沒有退避 — 他們的報告說一個旗標可以在分階段時捕獲它。 全球複製,20%:一行,每個區域, 幾秒鐘。Cloudflare,20%:一半產品線依賴一個供應商的儲存, 以及一份從未提及 Google 的事後檢討。 狀態頁面,5%,因為它運行在它所報告的服務上。 爆炸半徑:七十個 Google Cloud 產品,十個 Workspace 應用程式,

爆炸半徑

2:23 每個區域。三小時。 在 Cloudflare:Access、WARP、Workers AI、Pages、Stream — 兩個半。 Hacker News,1400 點;熱門評論:狀態頁面是綠色的。

判決 + 星期一線

2:33 判決,事後檢討:SHIP IT。 兩份事後檢討都在三十小時內發布,兩者都歸咎於自己, Google 的修復措施具體:開放失敗,旗標預設關閉, 指數退避。星期一線:新程式碼放在預設關閉的旗標後面, 以及在資料輸入處進行空值檢查。 將您仍不被允許談論的事件寄給我, 在評論中,或發送至 the daily diff dot dev。 這就是今天的 The Daily Diff。

2:53 我是 Axrisi 的 Niko。 MERGE RESPONSIBLY。

來源

  1. Google Cloud Service Health, Incident Report (Jun 13, 2025) + Mini Incident Report (Jun 12)status.cloud.google.com
  2. Cloudflare, "Cloudflare service outage June 12, 2025" (Jun 12, 2025, 22:00 UTC)blog.cloudflare.com
  3. Cloudflare Status, "Broad Cloudflare service outages" (18:19–21:31 UTC)www.cloudflarestatus.com
  4. Gergely Orosz, 19:11 UTC, "Their infra is fully independent AFAIK"x.com
  5. @Google support, 19:32 UTC, "there aren't any known service disruptions"x.com
  6. Thomas Kurian (Google Cloud CEO), Jun 13 01:35 UTCx.com
  7. Hacker News, "GCP Outage" (1,468 points)news.ycombinator.com
  8. Hacker News, "Cloudflare was down" (341 points)news.ycombinator.com
  9. Hacker News, "Google Cloud Incident Report – 2025-06-13" (209 points)news.ycombinator.com

相關影片

postmortem · zh-TW · 2026年9月16日

Facebook從網路世界中消失了。六小時。

Facebook將自己的位址從網際網路中刪除,當其工程師趕來恢復時,門禁讀卡機也失效了,因為它們是運行在Facebook上的。2021年10月4日,15:40 UTC:一個例行的骨幹網路維護指令導致Facebook所有數據中心之間的鏈接中斷;用於阻止此類指令的審計工具存在錯誤;Facebook的名稱伺服器由於無法連線到數據中心,按設計撤回了它們自己的BGP路由——因此facebook.com、In

3:01 ↗
postmortem · zh-TW · 2026年9月22日

重新開機讓 Telstra 回到 2006 年。九百萬支手機受影響。

墨爾本的一名工程師在凌晨 2:50 重新啟動計時機箱,到早餐時間,澳洲最大的行動網路一致同意時間是 2006 年 11 月 8 日。2026 年 7 月 8 日:Telstra 的 NTP 機箱中一個 GPS 卡在電源維修期間重新啟動,其韌體從未進行過 GPS 週數翻轉更新,因此它選擇了舊的紀元,回到 1,024 週前。由於 2025 年 10 月的權宜之計,該卡成為網路唯一的 stratum-1

3:15 ↗
postmortem · zh-TW · 2026年9月12日

一個正規表達式擊垮了 Cloudflare。27 分鐘。

2019 年 7 月 2 日,世界標準時間 13:42:Cloudflare 的網路應用程式防火牆 (WAF) 的一項新規則在大約兩秒鐘內在全球 180 多個城市上線。這是一項模擬模式下的 XSS 規則,因此它不會阻止任何內容,但它仍然會在每個請求上運行,並且它以 .*(?:.*=.*) 結尾。PCRE 進行回溯,每個處理 HTTP 請求的 CPU 核心都達到 100 %,每個經 Cloudfla

3:00 ↗