找出延遲發生的位置

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

  1. 在影響服務的用戶端應用程式中,確認用戶端來回延遲時間是否有增加。請查看用戶端指標中的下列維度。

    • 用戶端應用程式名稱
    • 用戶端位置 (例如 Compute Engine VM 區) 和主機 (也就是 VM 名稱)
    • Spanner API 方法
    • Spanner API 狀態

    依據這些維度進行分組,瞭解問題是否只限於特定用戶端、狀態或方法。如果是雙區域或多區域工作負載,請查看問題是否只發生在特定用戶端或 Spanner 區域。

  2. 檢查用戶端應用程式的健康狀況,特別是用戶端的運算基礎架構 (例如 VM、CPU 或記憶體使用率、連線、檔案描述符等等)。

  3. 檢查 Spanner 元件的延遲時間:

    a. 使用 OpenTelemetryOpenCensus 檢查用戶端往返延遲時間。

    b. 使用 OpenTelemetryOpenCensus 檢查 Google 前端 (GFE) 延遲時間。

    c. 使用 OpenTelemetryOpenCensus 檢查 Spanner API 要求延遲時間。

    如果用戶端來回延遲時間很長,但 GFE 延遲時間和 Spanner API 要求延遲時間都很短,則應用程式程式碼可能有問題。這也可能是用戶端與區域 GFE 之間的網路問題。如果應用程式出現效能問題,導致部分程式碼路徑速度變慢,則每個 API 要求的用戶端來回延遲時間可能會增加。用戶端運算基礎架構中也可能有問題,但在先前的步驟中並未偵測到。

  4. 請檢查下列維度,以便查看 Spanner 指標

    • Spanner 資料庫名稱
    • Spanner API 方法
    • Spanner API 狀態

    依據這些維度分組,瞭解問題是否只限於特定資料庫、狀態或方法。如果是雙區域或多地區工作負載,請確認問題是否只發生在特定區域。

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

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

    • GFE 層發生問題。請前往Google Cloud 狀態資訊主頁,查看您所在地區是否有任何網路問題。如果沒有任何問題,請建立客服案件並附上這項資訊,以便支援工程師協助排解 GFE 問題。

  5. 檢查執行個體的 CPU 使用率。如果執行個體的 CPU 使用率超過建議值,請手動新增更多節點,或設定自動調整資源。詳情請參閱「自動調度資源配置總覽」。

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

  7. 檢查流量模式是否有變化。

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

  9. 使用「最耗時的有效查詢」中的程序,查看可能造成效能瓶頸的任何費用查詢,並視需要取消查詢。

  10. 請使用下列主題中排解問題的部分所述程序,進一步使用 Spanner 內省工具排解問題:

後續步驟