本頁說明受管理自動調整功能的運作方式,以及使用 Spanner 受管理自動調整功能時的費用和限制。此外,這份指南也提供相關資訊,協助您決定如何設定代管自動調度器。
代管式自動配置器的運作方式
啟用代管自動調度資源功能後,Spanner 會自動調整執行個體大小。您可以在 Spanner 執行個體或執行個體分割區中啟用代管自動調度器 (處於預覽版)。當負載增加或減少時,受管理自動調度資源功能會因應執行個體工作負載或儲存空間需求的變化,受管理自動調度器會調度資源,為執行個體新增運算能力,或調度資源,從執行個體移除運算能力。
設定受管理的自動調度資源功能時,您可以為小型執行個體使用處理單元,或為大型執行個體使用節點。在本文件中,我們使用「運算資源」一詞代表節點或處理單元。
Spanner 代管自動配置器會根據下列因素,判斷所需的運算容量:
- 高優先順序 CPU 使用率目標
- CPU 總使用率目標
- 儲存空間使用率目標
- 下限
- 上限
每個資源調度維度都會產生建議的執行個體大小,而 Spanner 會自動使用最大的執行個體大小。舉例來說,如果執行個體需要 10 個節點才能達到儲存空間使用率目標,但需要 12 個節點才能達到 CPU 使用率目標,Spanner 就會將執行個體擴充至 12 個節點。
隨著運算能力變更,Spanner 會持續最佳化儲存空間。在所有伺服器之間重新平衡資料,確保流量平均分配,且個別伺服器不會過載。詳情請參閱「限制」一節。
如果代管自動調度器將執行個體調度至上限,但工作負載仍導致 CPU 使用率高於目標,工作負載要求可能會出現較高的延遲時間或失敗。如果執行個體擴充至運算容量上限,但工作負載需要的儲存空間超出上限,寫入要求可能會失敗。如要瞭解是否已達到目標上限,請在 Google Cloud 控制台的「系統洞察」頁面中,查看代管自動調度資源系統事件記錄。詳情請參閱儲存空間限制。
當 Spanner 縮減執行個體時,移除運算資源的速度會比擴增時慢,以減少對延遲的影響。
您可以選擇在執行個體中,以非對稱的方式自動調度唯讀副本的資源。 您無法非對稱地自動調度執行個體分區。詳情請參閱「非對稱唯讀自動調度資源」。
定價
啟用代管自動調度資源前,您設定的 Spanner 執行個體或執行個體分割區,以及您為代管自動調度資源設定的限制,都會影響 Spanner 總費用。
舉例來說,如果您過去手動設定 Spanner 執行個體,確保有足夠的運算容量隨時處理尖峰工作負載,那麼使用受管理自動調度資源功能後,當執行個體處於閒置狀態時,這項功能會減少運算容量,因此您的費用可能會降低。
如果您過去是手動設定 Spanner 執行個體,確保有足夠的運算資源來處理平均工作負載,但工作負載流量增加時,整體效能就會下降,那麼使用代管自動調度資源時,成本可能會較高,因為執行個體忙碌時,代管自動調度資源可能會增加運算資源。但這能為使用者提供更穩定的效能。
您可以將節點或處理單元上限設為您想支出的金額,藉此限制 Spanner 執行個體的最高費用。
與只設定高優先順序 CPU 使用率目標相比,在 Spanner 執行個體上設定總 CPU 使用率目標時,您可能會發現所用的運算資源增加,因此費用也會增加。不過,設定這個選項後,使用者體驗會大幅提升,效能也會有所改善。
限制
在執行個體或執行個體分割區上啟用或變更代管自動調度資源功能時,會受到下列限制:
- 啟用受管理自動調度資源功能後,您就無法移動執行個體。您必須先停用受管理自動調度器,然後再移動執行個體。遷移執行個體後,您可以重新啟用代管自動調度器。
- 您必須將自動調度資源執行個體的下限設為 1000 個以上的處理單元,或 1 個以上的節點。
- 在現有執行個體上啟用自動調度資源功能時,現有執行個體容量可能低於您在代管自動配置器上設定的下限值。不過,執行個體啟動時,會自動擴充至設定的最小值。舉例來說,如果執行個體有一個節點,但您將最小值設為兩個節點,啟動執行個體時,系統會自動擴充至兩個節點。
- 您無法非對稱地自動調度執行個體分區。
- 如果分割區中的刊登位置列數超過 1 億,請勿啟用自動調度資源功能。這是地理位置分區的限制。
代管式自動調度資源參數
建立或編輯執行個體或執行個體分割區,並選擇啟用受管理自動配置器時,請定義下表顯示的值。
| 參數 | 說明 |
|---|---|
| 高優先順序 CPU 使用率目標 | 執行個體 CPU 容量百分比,用於高優先順序工作。這個值必須介於 10% 到 90% 之間。當執行個體的高優先順序 CPU 使用率超過您設定的目標時,Spanner 會立即為執行個體增加運算資源。如果 CPU 使用率遠低於目標值,Spanner 就會移除運算資源。詳情請參閱「判斷高優先順序 CPU 使用率目標」。 |
| CPU 總使用率目標 | 執行個體總 CPU 容量的百分比,用於高、中和低優先順序工作。這個值必須介於 10% 到 90% 之間。當執行個體的總 CPU 使用率超過您設定的目標時,Spanner 會立即為執行個體增加運算資源。如果總 CPU 使用率遠低於目標,Spanner 就會移除運算資源。詳情請參閱「判斷 CPU 總使用率目標」。 |
| 儲存空間使用率目標 | 節點上可使用的儲存空間百分比,超過這個百分比後,Spanner 就會擴充。這項目標可確保您隨時都有足夠的運算容量,可處理儲存資料量的波動。這個值必須介於 10% 至 99% 之間。詳情請參閱「判斷儲存空間使用率目標」。 |
| 下限 | Spanner 將執行個體運算能力調降至的最低值。最小值不得低於您為上限設定值的 10%。舉例來說,如果節點數量上限為 40 個,則下限必須至少為 4 個節點。10% 的規定是硬性限制,詳情請參閱「判斷最低限制」。 |
| 上限 | Spanner 擴充執行個體時的運算資源上限。如果是節點,這個值必須大於 1 個節點 (或 1, 000 個處理單元),且等於或大於節點或處理單元的下限。這個值不得超過您為運算容量下限選擇的數字 10 倍。這項 10 倍的規定是硬性限制。詳情請參閱「判斷上限」。 |
| 停用縮小功能 | 防止自動配置器減少節點或處理單元數量。如果設為 True,系統會停用所有縮減行為,包括執行個體和執行個體分區縮減。這個選項只能透過 Google Cloud CLI 設定。詳情請參閱 Google Cloud CLI 參數標記和限制。 |
設定受管理自動調度器
本節說明如何為受管理自動調整比例參數選擇適當的數字。設定初始值後,請監控執行個體,並視需要調整數值。
決定高優先順序 CPU 使用率目標
執行個體或執行個體分割區的最佳目標取決於工作負載的延遲和輸送量需求。如要查看區域、雙區域和多區域執行個體設定的 CPU 使用率上限建議,請參閱「CPU 使用率偏高快訊」。
如果 CPU 使用率接近或超過 100%,效能可能會降低。如果工作負載容易受到延遲或效能影響,請考慮將 CPU 總目標值自訂為較低的值。請注意,這麼做可能會產生較高的費用。
一般來說,如果延遲時間過長,您應降低 CPU 使用率目標。
您也可以設定總 CPU 使用率和高優先順序 CPU 使用率的目標。詳情請參閱「判斷 CPU 使用率目標」。
判斷 CPU 總使用率目標
設定總 CPU 使用率目標後,Spanner 會自動調度資源,確保高、中、低優先順序工作有足夠的容量。
如果工作負載對延遲時間很敏感,或是希望系統工作盡快完成,您必須設定 CPU 總目標,確保執行個體有足夠的容量。設定 CPU 總目標時,您可能需要支付較多費用,但應用程式可為顧客提供更優質的體驗。
如果已設定 CPU 總用量目標,但延遲時間仍過高,請降低 CPU 總用量目標。
為盡量提高寫入和建立索引的處理量,建議您將區域執行個體的 CPU 總目標設為 70%,多區域執行個體則設為 50%。如果未選取高優先順序目標,這項功能在容錯移轉期間也能正常運作。 不過,這些目標可能會產生較高的費用。如果擔心費用,建議將 CPU 總目標設為 85%。這項機制可提供額外資源,吸收尖峰流量,避免因資源飽和 (使用率達 100%) 而觸發延遲。
根據預設,Spanner 會節流耗用大量資源的背景作業 (例如建立索引),優先處理面向使用者的流量。您可以設定較低的 CPU 總用量目標 (例如 <=60%),加快這些背景作業的執行速度。這會向自動配置器發出信號,要求提供額外的運算資源,進而提高系統工作的總處理量。但這可能會增加費用。如要暫時提高索引建立的處理量,可以設定較低的 CPU 總目標,直到索引建立完成為止。
您也可以設定總 CPU 使用率和高優先順序 CPU 使用率的目標。詳情請參閱「判斷 CPU 使用率目標」。
判斷這兩個 CPU 使用率目標
如果您同時設定總 CPU 和高優先順序 CPU 使用率的目標,自動調度器會同時評估這兩項指標。接著,系統會選取建議的節點或處理單元數量中較高者。這樣可確保執行個體會擴充,以滿足較嚴苛的需求,同時維持重要工作負載的效能,並完成背景工作。
如果同時設定高優先順序 CPU 和 CPU 總使用率目標,高優先順序工作的 CPU 使用率會計入總使用率,低優先順序和中優先順序工作也是如此。如果同時選取這兩個選項,高優先順序 CPU 使用率目標的值必須小於總 CPU 使用率目標。
一般來說,如果延遲時間過長,您應降低 CPU 使用率目標。
一般來說,為確保容錯移轉的可靠性,建議將 CPU 使用率設為下列目標:
| 執行個體類型 | CPU 總使用率目標 | 高優先順序 CPU 使用率目標 |
|---|---|---|
| 區域執行個體 | 70% | 65% |
| 多區域執行個體 | 50% | 45% |
視工作負載而定,我們也建議採用下列更具體的 CPU 使用率目標:
| 工作負載類型 | 建議的 CPU 目標 | 缺點 |
|---|---|---|
| 需要高輸送量,且寫入量大的工作負載 | CPU 總使用率目標:70% | 以延遲時間為代價,提高處理量 |
| 易受延遲影響,且讀取量大的工作負載 | 總 CPU 使用率目標:80% 高優先順序 CPU 使用率目標:65% (單一區域) 或 45% (多區域) |
以較高成本預測尾部延遲 |
| 優先考量成本效益的工作負載 | 總 CPU 使用率目標:85% 高優先順序 CPU 使用率目標:65% (單一區域) 或 45% (多區域) |
成本合理且效能良好,但索引建立作業可能會延遲 |
決定儲存空間使用率目標
如果是自動調度資源,儲存空間使用率目標會以每個節點的百分比表示。如果執行個體或執行個體分割區為 1 個節點 (1, 000 個處理單元) 以上,每個節點的儲存空間大小上限為 10 TiB。
決定上限
您選擇的運算能力上限值,等於執行個體或執行個體分割區處理最大流量所需的運算能力,即使您預期大部分時間不會達到該流量。Spanner 絕不會擴充至超過需求的運算容量。您也可以將這個數字視為您願意支付的最高運算容量金額。如要進一步瞭解可接受的值,請參閱「自動配置器參數」。
上限必須允許您為自動調度資源設定的 CPU 使用率目標和儲存空間使用率目標。
如果要將執行個體從手動分配變更為代管自動調度資源,請找出執行個體在過去一到兩個月內使用的最高運算容量。管理型自動調整程式的上限至少應達到這個值。
如果您要為新執行個體啟用代管自動調度資源功能,請查看其他執行個體的指標,並在設定上限時做為參考。
如果您有新的工作負載,但不確定會如何成長,可以先估算滿足內建儲存空間用量目標所需的運算容量,之後再調整數量。
您也需要瞭解節點的剩餘配額,因為代管自動調度器無法將執行個體設定為超過配額的運算容量。詳情請參閱「節點限制」一節。
啟用自動調度資源後,請監控執行個體,並確認您為上限選擇的值至少與 CPU 目標的建議上限和儲存空間目標的建議上限一樣高。
決定最低限制
您可以為代管自動調度資源功能設定下限,確保 Spanner 執行個體或執行個體分割區可縮減至最小、最具成本效益的大小。Spanner 會自動防止節點數量低於維持 CPU 和儲存空間使用率目標所需的最低數量。
代管自動調度器允許的最小值為 1 個節點或 1000 個處理單元。如果現有執行個體的容量低於代管自動配置器設定的最小值,啟用自動調度資源功能後,執行個體會在啟動時自動擴充至這個最小值。
啟動具有自動調度資源功能的執行個體後,您應執行初步測試,確保執行個體能以設定的最小大小運作。您應定期再次測試,確保功能持續正常運作。
如要進一步瞭解可接受的值,請參閱「受管理自動調度器參數」。
在許多情況下,您會希望將最小值設為一以上。在下列情況中,請選擇較高的數字或提高下限:
- 您即將舉辦尖峰規模活動,預期流量會暫時增加,因此想確保有足夠的運算容量。
- 您的應用程式會傳送尖峰流量。新增運算能力時,Spanner 會自動重新平衡,以使用新的節點或處理單元。這項程序可能需要幾分鐘,因此建議您採取保守做法,選擇較高的最低值。這樣一來,執行個體就能順利因應尖峰流量。
- 提高運算容量上限。最小值一律須為運算容量目標上限的 10% 以上。舉例來說,如果將節點數量上限設為
30,節點數量下限就必須設為至少3。
如果調高執行個體的最低運算資源值,Spanner 會立即嘗試將執行個體擴充至新的最低值。適用標準限制。配額用盡時,變更代管自動調度資源設定的要求會失敗,且設定不會更新。
首次設定受管理自動調度器後,以及之後定期進行時,請測試執行個體,確保執行個體能以最小大小運作。
Google Cloud CLI 參數標記和限制
使用 Google Cloud CLI 設定受管理自動調整程式時,必須設定一些必要旗標。您可以選擇使用節點或處理單元,並透過選用旗標指出是否要使用。如要進一步瞭解如何使用代管自動配置器建立新的執行個體或執行個體分區,或在現有執行個體或執行個體分區上啟用代管自動配置器,請參閱下列使用指南:
在執行個體上啟用代管自動調度資源功能時,必須使用下列標記:
autoscaling-high-priority-cpu-percent