找出延遲發生的位置

本頁說明如何找出並解決 Spanner 元件的延遲問題。如要進一步瞭解 Spanner 要求中可能出現的延遲點,請參閱「Spanner 要求中的延遲點」。

您可以測量及比較不同元件和資料庫之間的請求延遲時間,判斷造成延遲的元件。這些延遲時間包括端對端延遲時間Google Front End (GFE) 延遲時間Spanner API 要求延遲時間查詢延遲時間

  1. 在您使用服務的用戶端應用程式中,確認端對端延遲時間是否增加。請檢查用戶端指標的下列維度。詳情請參閱「用戶端指標說明」。

    • client_name:用戶端程式庫名稱和版本。
    • location:發布用戶端指標的 Google Cloud 區域。如果應用程式部署在Google Cloud以外的位置,指標會發布至 global 區域。
    • method:RPC 方法名稱,例如 spanner.commit
    • status:RPC 狀態,例如 OKINTERNAL

    依這些維度分組,即可查看問題是否僅限於特定用戶端、狀態或方法。如果是雙區域或多區域工作負載,請確認問題是否僅限於特定用戶端或 Spanner 區域。

  2. 檢查用戶端應用程式的健康狀態,尤其是用戶端 (例如 VM、CPU 或記憶體用量、連線、檔案描述元等) 的運算基礎架構。

  3. 查看用戶端指標,即可檢查 Spanner 元件的延遲時間:

    a. 使用 spanner.googleapis.com/client/operation_latencies 指標檢查端對端延遲時間。

    b. 使用 spanner.googleapis.com/client/gfe_latencies 指標檢查 Google Front End (GFE) 延遲時間。

  4. 檢查下列維度的 Spanner 指標

    • database:Spanner 資料庫名稱。
    • method:RPC 方法名稱,例如 spanner.commit
    • status:RPC 狀態,例如 OKINTERNAL

    依這些維度分組,查看問題是否僅限於特定資料庫、狀態或方法。如果是雙區域或多區域工作負載,請檢查問題是否僅限於特定區域。

  5. 使用 spanner.googleapis.com/api/request_latencies 指標檢查 Spanner API 要求延遲時間。詳情請參閱「Spanner 指標」。

    如果端對端延遲時間較長,但 GFE 延遲時間和 Spanner API 要求延遲時間較短,則可能是應用程式程式碼有問題。這也可能表示用戶端與區域 GFE 之間發生網路問題。如果應用程式發生效能問題,導致某些程式碼路徑變慢,則每個 API 要求的端對端延遲時間可能會增加。用戶端運算基礎架構也可能存在問題,但上一個步驟未偵測到。

    如果 GFE 延遲時間較長,但 Spanner API 要求的延遲時間較短,可能的原因如下:

    • 從其他區域存取資料庫。這項操作可能會導致 GFE 延遲時間較長,但 Spanner API 要求延遲時間較短。舉例來說,如果 us-east1 區域的用戶端在 us-central1 區域有執行個體,則 GFE 延遲時間可能較長,但 Spanner API 要求延遲時間較短。

    • GFE 層發生問題。請查看Google Cloud 狀態資訊主頁,確認您所在地區是否有持續發生的網路問題。如果沒有任何問題,請開啟客服案件並附上這項資訊,支援工程師就能協助排解 GFE 問題。

  6. 檢查執行個體的 CPU 使用率。 如果執行個體的 CPU 使用率高於建議值,您應手動新增節點,或設定自動調整規模。詳情請參閱「自動調度總覽」。

  7. 使用 Key Visualizer 觀察並排解潛在的熱點或不平衡的存取模式,然後嘗試還原與問題時間範圍密切相關的任何應用程式程式碼變更。

  8. 檢查流量模式是否有任何變化。

  9. 查看查詢洞察交易洞察,瞭解是否有任何查詢或交易效能瓶頸。

  10. 使用「最耗時的有效查詢」中的程序,查看可能導致效能瓶頸的費用查詢,並視需要取消查詢。

  11. 請使用下列主題中疑難排解章節的程序,透過 Spanner 內省工具進一步排解問題:

後續步驟