跳轉到

PostgreSQL Checkpoint IO Storm

概念概覽

Checkpoint IO 風暴的診斷方法

核心知識

Checkpoint IO 風暴的診斷方法

從壓測 P3 數據提取 WAL 速率,線性推算規模需求:

壓測 P3 實測 Checkpoint WAL:4.26–6.01 MB/s
推算 100k CCU:(100,000 / CCU_baseline) × 實測值 ≈ 2,130–3,005 MB/s
gp3 100GB 上限:125 MB/s
超出倍數:~17x

gp3 Volume Striping 機制(關鍵隱藏機制)

  • storage ≥ 400GB 時 AWS 自動啟用 4 volume striping
  • throughput 從 125 MB/s 免費提升至 500 MB/s,無需購買 Provisioned Throughput
  • 只需付儲存空間費用,是解決 Checkpoint IO 問題最具成本效益的方案
  • 若 500 MB/s 仍不足,可購買 Provisioned Throughput(最高 4,000 MB/s,但需額外計費)

Checkpoint 風暴的症狀特徵

與連線數瓶頸(拒絕新連線)不同: - 表現為**週期性瞬間全服卡頓**,而非持續高延遲 - 遊戲玩家可感知的週期性卡頓,需與連線數問題分別診斷 - 設定 checkpoint_completion_target=0.9 可讓 Checkpoint 分散完成,緩解 IO 峰值

經驗教訓

  • Checkpoint IO 風暴與連線數瓶頸是**並行存在**的獨立問題,解決其中一個不能消除另一個

  • gp3 volume striping 是免費的,升級儲存至 400GB+ 前應先確認是否已達臨界點

  • 症狀診斷:連線數瓶頸 → 新連線被拒;Checkpoint 風暴 → 所有連線週期性卡頓

常見陷阱

  • 只關注 RDS CPU/RAM 指標,忽略 WAL throughput 和 Checkpoint 頻率,導致漏掉 IO 瓶頸

  • gp3 100GB 的 125 MB/s 上限在中低 CCU 壓測時不明顯,只有接近目標 CCU 時才爆發

最佳實踐

  • 容量規劃壓測時必須同時量測 WAL 寫入速率和 Checkpoint 頻率

  • RDS gp3 儲存規劃:優先升至 400GB 觸發免費 striping,再評估是否需要 Provisioned Throughput

  • production 環境設定 checkpoint_completion_target=0.9 作為基本調優

相關概念

相關視角

以下頁面與本概念共享主題,但從不同角度切入。保留獨立視角同時提供交叉參考:

來源 Sessions

日期 Session 貢獻摘要

| 2026-03-25 | 135234ac-cc13-4bd9-92f0-c123f2169ae2 | 從壓測 WAL 數據線性推算 100k CCU 的 Checkpoint IO 需求,並揭示 gp3 ≥400GB 觸發 volume striping 的免費 throughput 提升機制 |


本概念頁面由 Semi-Brain Wiki 系統自動維護

最後更新: 2026-03-25