# Google Cloud 在空白欄位當機。三小時。

Published: 2026-09-19

一個帶有幾個空白欄位的策略行觸發了空指標，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 上。

Canonical: https://thedailydiff.dev/zh-HK/video/2026-09-19-google-cloud-null-pointer/

## 本影片涵蓋的內容

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

## 章節

- 0:00 空白欄位，空指標，所有區域
- 0:32 時間軸：5 月 29 日 → 17:45 → 崩潰循環 → 紅色按鈕 → 17:52 Cloudflare
- 1:32 us-central1：羊群效應
- 1:43 機制：請求路徑中的檢查，全球複製，單一供應商
- 2:00 git blame — 分裂
- 2:20 影響範圍
- 2:33 裁決 + 星期一線

## 翻譯的文字記錄

從英文原文旁白翻譯。可用的音頻和字幕由 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。 負責任地合併。

## 來源

- [Google Cloud Service Health, Incident Report (Jun 13, 2025) + Mini Incident Report (Jun 12)](https://status.cloud.google.com/incidents/ow5i3PPK96RduMcb1SsW) — status.cloud.google.com
- [Cloudflare, "Cloudflare service outage June 12, 2025" (Jun 12, 2025, 22:00 UTC)](https://blog.cloudflare.com/cloudflare-service-outage-june-12-2025/) — blog.cloudflare.com
- [Cloudflare Status, "Broad Cloudflare service outages" (18:19–21:31 UTC)](https://www.cloudflarestatus.com/incidents/25r9t0vz99rp) — www.cloudflarestatus.com
- [Gergely Orosz, 19:11 UTC, "Their infra is fully independent AFAIK"](https://x.com/GergelyOrosz/status/1933240698716729511) — x.com
- [@Google support, 19:32 UTC, "there aren't any known service disruptions"](https://x.com/Google/status/1933246051512644069) — x.com
- [Thomas Kurian (Google Cloud CEO), Jun 13 01:35 UTC](https://x.com/ThomasOrTK/status/1933337436970709493) — x.com
- [Hacker News, "GCP Outage" (1,468 points)](https://news.ycombinator.com/item?id=44260810) — news.ycombinator.com
- [Hacker News, "Cloudflare was down" (341 points)](https://news.ycombinator.com/item?id=44261064) — news.ycombinator.com
- [Hacker News, "Google Cloud Incident Report – 2025-06-13" (209 points)](https://news.ycombinator.com/item?id=44274563) — news.ycombinator.com
