+− 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,百分之九十失敗, 兩小時二十八分鐘。

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 支援告知用戶沒有已知的服務中斷 — 嘗試清除 你的 Cookie。其他地方在 19:48 前恢復。

us-central1:羊群效應

1:34 us-central1 沒有恢復:重新啟動的任務衝擊相同的 Spanner 表格, 沒有隨機退避,所以 Google 手動節流它們。 兩小時四十分鐘。 一:策略檢查位於請求路徑內;當檢查失效時,

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

1:46 API 也失效。 二:配額數據在沒有分段的情況下全球傳播;一個壞行就是一個全球行。 三:Cloudflare 知道。 Workers KV 正在遷移到自己的 R2,縮減到一個供應商 — 事後分析 稱其為覆蓋範圍的空白。

git blame — 分裂

2:00 git blame。Google,百分之五十五:沒有空值檢查,沒有功能旗標, 沒有退避 — 他們的報告說旗標會在分段中捕捉到它。 全球複製,百分之二十:一行,所有區域, 幾秒鐘。Cloudflare,百分之二十:一半產品線依賴一個供應商的儲存庫, 以及一個從未提及 Google 的事後分析。 狀態頁面,百分之五,因為它運行在它所報告的服務上。 影響範圍:七十個 Google Cloud 產品,十個 Workspace 應用程式,

影響範圍

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

裁決 + 星期一線

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

2:53 我是來自 Axrisi 的 Niko。 負責任地合併。

來源

  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-HK · 2026年9月16日

Facebook從互聯網上刪除了自己。長達六小時。

Facebook將自己的地址從互聯網上移除,當其工程師趕來恢復時,門禁讀取器也失靈了,因為它們也依賴Facebook運作。2021年10月4日,UTC時間15:40:一個例行的骨幹網絡維護指令導致Facebook所有數據中心之間的連接中斷;旨在阻止此類操作的審核工具存在錯誤;Facebook的名稱伺服器由於無法連接數據中心,依設計撤回了自己的BGP路由——於是facebook.com、Instag

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

重啟令 Telstra 倒退回 2006 年。九百萬部電話。

墨爾本的一名工程師在凌晨 2 時 50 分重啟計時機箱,到早餐時,澳洲最大的流動網絡竟以為是 2006 年 11 月。2026 年 7 月 8 日:Telstra NTP 機箱中的 GPS 卡在更換電源期間重啟,其韌體從未有 GPS 週數滾動更新,因此它選擇了舊的紀元,倒退了 1,024 週。由於 2025 年 10 月的變通方法使該卡成為網絡唯一的 stratum-1 來源 — 以及 2020

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

一個正規表達式擊潰了Cloudflare。持續27分鐘。

2019年7月2日,世界標準時間13:42:一條針對Cloudflare網絡應用程式防火牆的新規則在約兩秒鐘內於180多個城市上線。這是一條模擬模式下的XSS規則,因此它不會阻擋任何東西,但它仍然會在每個請求上運行,並且以.*(?:.*=.*)結尾。PCRE回溯,每個服務HTTP的CPU核心達到100%,每個透過Cloudflare代理的網站都會在27分鐘內返回502;流量下降82%。終止開關位於

3:00 ↗