使用指標診斷延遲問題

本頁說明 Spanner 提供的延遲時間指標。如果應用程式發生高延遲問題,請使用這些指標診斷及解決問題。

您可以在 Google Cloud 控制台Cloud Monitoring 控制台中查看這些指標。

延遲指標總覽

Spanner 的延遲時間指標會評估 Spanner 服務處理要求所需的時間。這項指標會擷取實際經過的時間量,而非 Spanner 使用的 CPU 時間量。

這些延遲時間指標不含 Spanner 以外的延遲時間,例如網路延遲時間或應用程式層內的延遲時間。如要評估其他類型的延遲,可以使用 Cloud Monitoring 透過自訂指標檢測應用程式

您可以在 Google Cloud 控制台Cloud Monitoring 控制台中查看延遲指標圖表。您可以查看包含讀取和寫入作業的合併延遲指標,也可以查看讀取和寫入作業的個別指標。

Spanner 會根據每個要求的延遲時間,將要求分組為百分位數。您可以查看第 50 個百分位數和第 99 個百分位數的延遲指標:

  • 第 50 個百分位數的延遲時間:最快 50% 的要求延遲時間上限 (以秒為單位)。舉例來說,如果第 50 個百分位數的延遲時間為 0.5 秒,表示 Spanner 處理 50% 的要求時,延遲時間不到 0.5 秒。

    這項指標有時也稱為「中位數延遲」

  • 第 99 個百分位數的延遲時間:最快 99% 要求的最大延遲時間 (以秒為單位)。舉例來說,如果第 99 個百分位數的延遲時間為 2 秒,表示 Spanner 處理 99% 的要求時,延遲時間都不到 2 秒。

延遲時間和每秒作業數

如果執行個體在一段時間內處理的要求數量較少,這段時間的第 50 和第 99 個百分位數延遲時間,就無法有效反映執行個體的整體效能。在這些情況下,極少數的離群值就可能大幅改變延遲指標。

舉例來說,假設執行個體在一小時內處理 100 個要求。在本例中,執行個體在該小時內的第 99 個百分位數延遲時間,就是處理最慢要求所花費的時間。根據單一要求進行的延遲評估沒有意義。

如何診斷延遲問題

下列各節說明如何診斷可能導致應用程式端對端延遲時間過長的常見問題。

如要快速查看執行個體的延遲指標,請使用Google Cloud 控制台。如要進一步檢查指標,並找出延遲時間和其他指標之間的關聯,請使用 Cloud Monitoring 控制台

總延遲時間長,Spanner 延遲時間短

如果應用程式的延遲時間高於預期,但 Spanner 的延遲時間指標明顯低於總端對端延遲時間,可能是應用程式程式碼有問題。如果應用程式發生效能問題,導致某些程式碼路徑速度緩慢,每項要求的端對端總延遲時間可能會增加。

如要檢查這個問題,請對應用程式進行基準測試,找出速度低於預期的程式碼路徑。

您也可以註解與 Spanner 通訊的程式碼,然後再次測量總延遲時間。如果總延遲時間變化不大,則高延遲時間不太可能是 Spanner 造成。

總延遲時間長、Spanner 延遲時間長

如果應用程式的延遲時間高於預期,且 Spanner 延遲指標也很高,可能的原因如下:

  • 執行個體需要更多運算能力。如果執行個體的 CPU 資源不足,且 CPU 使用率超過建議上限,Spanner 可能無法快速有效率地處理要求。

  • 部分查詢導致 CPU 使用率偏高。如果查詢未善用可提升效率的 Spanner 功能 (例如查詢參數次要索引),或是包含大量聯結或其他耗用大量 CPU 的作業,查詢可能會耗用執行個體的大部分 CPU 資源。

如要檢查這些問題,請使用 Cloud Monitoring 主控台找出 CPU 使用率偏高和延遲時間偏長之間的關聯。此外,請檢查執行個體的查詢統計資料,找出同一時間範圍內耗用大量 CPU 的查詢。

如果發現 CPU 使用率和延遲時間同時偏高,請採取行動解決問題:

後續步驟