# 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-TW/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，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。

## 來源

- [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
