本頁說明如何排解 Spanner 元件問題,找出延遲來源。如要進一步瞭解 Spanner 要求中可能的延遲時間點,請參閱「Spanner 要求中的延遲時間點」。
在影響服務的用戶端應用程式中,確認用戶端來回延遲時間是否有增加。請查看用戶端指標中的下列維度。
- 用戶端應用程式名稱
- 用戶端位置 (例如 Compute Engine VM 區) 和主機 (也就是 VM 名稱)
- Spanner API 方法
- Spanner API 狀態
依據這些維度進行分組,瞭解問題是否只限於特定用戶端、狀態或方法。如果是雙區域或多區域工作負載,請查看問題是否只發生在特定用戶端或 Spanner 區域。
檢查用戶端應用程式的健康狀況,特別是用戶端的運算基礎架構 (例如 VM、CPU 或記憶體使用率、連線、檔案描述符等等)。
檢查 Spanner 元件的延遲時間:
a. 使用 OpenTelemetry 或 OpenCensus 檢查用戶端往返延遲時間。
b. 使用 OpenTelemetry 或 OpenCensus 檢查 Google 前端 (GFE) 延遲時間。
c. 使用 OpenTelemetry 或 OpenCensus 檢查 Spanner API 要求延遲時間。
如果用戶端來回延遲時間很長,但 GFE 延遲時間和 Spanner API 要求延遲時間都很短,則應用程式程式碼可能有問題。這也可能是用戶端與區域 GFE 之間的網路問題。如果應用程式出現效能問題,導致部分程式碼路徑速度變慢,則每個 API 要求的用戶端來回延遲時間可能會增加。用戶端運算基礎架構中也可能有問題,但在先前的步驟中並未偵測到。
請檢查下列維度,以便查看 Spanner 指標:
- Spanner 資料庫名稱
- Spanner API 方法
- Spanner API 狀態
依據這些維度分組,瞭解問題是否只限於特定資料庫、狀態或方法。如果是雙區域或多地區工作負載,請確認問題是否只發生在特定區域。
如果 GFE 延遲時間很長,但 Spanner API 要求延遲時間很短,可能有下列原因:
從其他區域存取資料庫。這項操作可能會導致 GFE 延遲時間變長,而 Spanner API 要求延遲時間變短。舉例來說,如果
us-east1
區域的用戶端在us-central1
區域中設有執行個體,則從該用戶端傳送的流量可能會出現較高的 GFE 延遲,但 Spanner API 要求的延遲較低。GFE 層發生問題。請前往Google Cloud 狀態資訊主頁,查看您所在地區是否有任何網路問題。如果沒有任何問題,請建立客服案件並附上這項資訊,以便支援工程師協助排解 GFE 問題。
檢查執行個體的 CPU 使用率。如果執行個體的 CPU 使用率超過建議值,請手動新增更多節點,或設定自動調整資源。詳情請參閱「自動調度資源配置總覽」。
使用「Key Visualizer」觀察及排解潛在熱點或不平衡的存取模式,並嘗試回溯與問題時間範圍密切相關的任何應用程式程式碼變更。
檢查流量模式是否有變化。
請使用下列主題中排解問題的部分所述程序,進一步使用 Spanner 內省工具排解問題:
後續步驟
- 您已經找出包含延遲的元件,現在請進一步使用 OpenCensus 探索問題。如需更多資訊,請參閱使用 OpenTelemetry 擷取自訂用戶端指標或使用 OpenCensus。
- 瞭解如何使用指標診斷延遲問題。
- 瞭解如何排解 Spanner 逾時錯誤。