本頁說明 Spanner 提供的 CPU 使用率指標。您可以在主控台和 Cloud Monitoring 主控台中查看這些指標。 Google Cloud
CPU 使用率和工作優先順序
Spanner 會根據工作來源和優先順序來評估 CPU 使用率。
來源:工作可由使用者或系統啟動。
優先順序:優先順序可協助 Spanner 判斷應先執行哪些工作。系統工作優先順序是預先決定的,無法設定。除非另有指定,否則「使用者」工作會以高優先順序執行。許多資料要求 (例如 read 和 executeSql) 都允許您為要求指定較低的優先順序。舉例來說,如果您要執行批次、維護或分析查詢,但沒有嚴格的效能 SLO,這項功能就很實用。
一般來說,優先順序較高的任務會先於優先順序較低的任務執行。即使有低優先順序的工作競爭,Spanner 仍會允許高優先順序的工作使用近 100% 的可用 CPU 資源。雖然低優先順序系統工作可以在短時間內延遲,但最終仍須完成作業。因此,您必須為執行個體佈建足夠的運算能力,才能處理所有工作。
如果沒有高優先順序的工作,Spanner 會使用近 100% 的可用 CPU 資源,更快速地完成低優先順序工作。背景用量突然增加並非問題徵兆,低優先順序的工作幾乎可立即暫停,讓高優先順序的工作 (包含使用者工作) 優先進行。
下表列出各項工作的範例:
使用者工作 | 系統工作 | |
---|---|---|
高優先順序 | 包括資料要求,例如 read 或 executeSql,其中未指定優先順序或 PRIORITY_HIGH。 | 包括資料分割。 |
中優先順序 |
包括:
|
包括:
|
低優先順序 | 包含指定 PRIORITY_LOW 的資料要求。 |
包括:
|
可用的指標
Spanner 提供下列 CPU 使用率指標:
平滑的 CPU 使用率:每個資料庫的 CPU 總使用率累計平均值,以執行個體 CPU 資源百分比表示。每個資料點都是過去 24 小時的平均值。您可以使用這項指標建立快訊,並分析長時間 (例如 24 小時) 的 CPU 使用率。您可以在控制台或Cloud Monitoring 主控台中,以「24 小時滾動平均值」查看這項指標的圖表。 Google Cloud
CPU 使用率 (按照優先順序顯示):CPU 使用率 (以執行個體 CPU 資源百分比表示,以優先順序、使用者啟動的工作和系統啟動的工作分組)。您可以使用這個指標建立警示,並從高層面分析 CPU 用量。您可以在Google Cloud 控制台或 Cloud Monitoring 主控台中查看這項指標的圖表。
CPU 使用率 (以作業類型分組):CPU 使用率 (以執行個體 CPU 資源百分比表示,以使用者啟動的作業類型分組),例如讀取、寫入和提交。如這篇文章所述,您可以使用這項指標取得 CPU 使用率的詳細細目,並進一步排解問題。您可以在 Cloud Monitoring 主控台中為這項指標建立圖表。
您也可以使用 Cloud Monitoring 主控台建立 CPU 使用率警示,如後文所述。
高 CPU 使用率快訊
下表列出地區、雙區域和多區域執行個體的 CPU 使用率建議上限。這些數字可確保執行個體有足夠的運算能力,在整個區域 (針對區域執行個體) 或整個地區 (針對雙地區和多地區執行個體) 無法使用時,繼續提供流量。
指標 | 地區執行個體的最大值 | 雙區域和多區域執行個體中每個地區的最大值 |
---|---|---|
高優先順序總計 | 65% | 45% |
24 小時順暢匯總 | 90% | 90% |
為了協助您維持在建議的最大值以下,請在 Cloud Monitoring 中建立快訊,追蹤高優先順序 CPU 使用率和 24 小時內的平均 CPU 使用率。
CPU 使用率可能會影響要求延遲時間。個別後端伺服器的超載會導致要求延遲時間增加。應用程式應執行基準測試和主動監控,以確認 Spanner 符合效能需求。
因此,如果是效能敏感的應用程式,您可能需要使用下節所述的技巧,進一步降低 CPU 使用率。
CPU 使用率超過 100%
在某些情況下,Spanner 執行個體的 CPU 使用率可能會超過 100%。這表示執行個體使用的 CPU 資源超過為執行個體設定的數量。
在 CPU 使用率突然飆升 (例如因要求流量突然增加而導致) 時,可能會使用超過 100% 的 CPU 資源,以提供更佳且更可預測的效能。
系統無法保證任何超過 100% 的 CPU 容量,因此不應將其用於一般資料庫作業。
長時間執行 CPU 使用率接近或超過 100% 的 Spanner 執行個體,可能會導致正常作業效能和延遲時間降低。額外的 CPU 資源並非可靠的安全機制,無法提供一致的效能。
客戶不必為這項額外的 CPU 使用量支付費用。
降低 CPU 使用率
本節說明如何降低執行個體的 CPU 使用率。
一般來說,我們建議您先增加執行個體的運算能力。增加運算能力後,您就可以調查並解決 CPU 使用率偏高的根本原因。
提高運算能力
如果 CPU 使用率超出建議的最大值,我們強烈建議您提高執行個體的運算容量,以便繼續有效運作。如果您想自動執行這項程序,可以建立應用程式來監控 CPU 使用率,然後視需要使用 UpdateInstance
方法增加或減少運算能力。
如要判斷所需的運算資源數量,請考量「高優先順序」CPU 使用率的最大值,以及「24 小時順暢」CPU 使用率的平均值。請配置足夠的運算能力,讓 CPU 使用率維持在建議最大值之下。如先前所述,您可能需要為效能敏感的應用程式配置額外的運算資源 (例如,以便因應工作負載尖峰)。
如果您擁有的運算能力不足,Spanner 會依優先等級延後工作。低優先順序系統工作,例如資料庫壓縮和結構定義變更驗證,可配合使用者工作延後。然而,這些工作對於執行個體的健康狀態而言非常重要,因此 Spanner 無法無限期將這些工作延後。如果 Spanner 無法在某個時間範圍內完成其低優先順序的系統工作 (依數小時到一天的順序),由於運算資源不足,Spanner 可能會提高這些工作的優先順序。這項變更會影響使用者工作的效能。
使用內省工具進一步調查
如果「CPU 使用率 (按照作業類型顯示)」指標顯示特定作業類型導致 CPU 使用率偏高,請使用 Spanner 內省工具進一步進行疑難排解。詳情請參閱「調查 CPU 使用率偏高的問題」。
後續步驟
- 使用 Google Cloud 控制台或 Cloud Monitoring 控制台監控執行個體。
- 建立 Spanner CPU 使用率的快訊。
- 瞭解如何變更 Spanner 執行個體的運算能力。
瞭解如何找出高延遲與其他指標之間的關聯性。
如要瞭解如何排解特定作業類型導致的 CPU 使用率偏高問題,請參閱「調查 CPU 使用率偏高問題」。