本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon DocumentDB 無伺服器擴展組態
主題
選擇 DocumentDB 無伺服器叢集的擴展容量範圍
將任何 DocumentDB 無伺服器執行個體新增至 Amazon DocumentDB 叢集之前,叢集也必須設定 ServerlessV2ScalingConfiguration
參數。
ServerlessV2ScalingConfiguration
參數包含兩個值,定義叢集中任何無伺服器執行個體的無伺服器擴展容量範圍:
MinCapacity
— 叢集中任何 DocumentDB 無伺服器執行個體的最低擴展容量。MaxCapacity
— 叢集中任何 DocumentDB 無伺服器執行個體的最大擴展容量。
選擇 DocumentDB 無伺服器叢集MinCapacity
的設定
總是為 選擇 0.5 很吸引人MinCapacity
。該值允許執行個體在完全閒置時縮減至最小容量,同時保持作用中狀態。不過,根據您使用該叢集的方式以及您設定的其他設定,不同的最小容量可能最有效。在選擇最小容量設定時,請考慮下列因素:
DocumentDB 無伺服器執行個體的擴展率取決於其目前的容量。目前的容量越高,則擴充規模就越快。如果您需要執行個體快速擴展到非常高的容量,請考慮將最小容量設定為擴展速率符合您需求的值。
如果您通常會修改執行個體的執行個體類別,預期工作負載特別高或低,您可以使用該體驗來粗略估計同等的 DocumentDB 無伺服器容量範圍。若要判斷佈建 Amazon DocumentDB 執行個體類型的記憶體大小,請參閱 執行個體限制。
例如,假設您在叢集的工作負載較低時,使用
db.r6g.xlarge
執行個體類別。該執行個體類別有 32 GiB 的記憶體。因此,您可以指定 16MinCapacity
的 來設定可縮減到大約相同容量的無伺服器執行個體。這是因為每個 DCU 對應大約 2 GiB 的記憶體。您可以指定較低的值,讓執行個體進一步縮減,以防db.r6g.xlarge
您的執行個體有時未充分利用。如果您的應用程式在執行個體在緩衝區快取中有特定數量的資料時最有效率地運作,請考慮指定記憶體大小足以容納經常存取資料的最小 DCU 設定。否則,當無伺服器執行個體縮減至較低的記憶體大小時,某些資料會從緩衝區快取中移出。然後,當執行個體向上擴展時,資訊會隨著時間重新讀回緩衝區快取。如果將資料帶回緩衝區快取的 I/O 量很大,則選擇較高的最小 DCU 值可能更有效。如需詳細資訊,請參閱執行個體大小調整。
如果您的 DocumentDB 無伺服器執行個體大部分時間以特定容量執行,請考慮指定低於該基準的最小容量設定,但不要太低。當目前的容量未大幅低於所需的容量時,無伺服器執行個體可以有效地估計擴展的程度和速度。
如果您的佈建工作負載對於 T3 或 T4g 等小型執行個體類別的記憶體需求太高,請選擇提供與 R5 或 R6g 執行個體相當之記憶體的最低 DCU 設定。
特別是,我們建議將下列最小值
MinCapacity
與指定的功能搭配使用 (這些建議可能會有所變更):績效詳情 — 2 DCUs
在 Amazon DocumentDB 中,複寫發生在儲存層,因此讀取器容量不會直接影響複寫。不過,對於獨立擴展的 DocumentDB 無伺服器讀取器執行個體,請確定最小容量足以在寫入密集期間處理工作負載,以避免查詢延遲。如果提升層 2–15 中的讀取器執行個體遇到效能問題,請考慮增加叢集的最小容量。如需變更讀取器執行個體是否與寫入器一起擴展或獨立擴展的詳細資訊,請參閱 檢視和修改無伺服器讀取器的提升層。
如果您有具有 DocumentDB 無伺服器讀取器執行個體的叢集,當讀取器的提升層不是 0 或 1 時,讀取器不會與寫入器執行個體一起擴展。在這種情況下,設定較低的最小容量可能會導致過多的複寫延遲。這是因為讀取器可能沒有足夠的容量,無法在資料庫繁忙時套用寫入器的變更。我們建議您將最小容量設定為代表與寫入器執行個體相當記憶體和 CPU 數量的值。
DocumentDB 無伺服器執行個體從其最小容量擴展到其最大容量所需的時間,取決於其最小和最大 DCU 值之間的差異。當執行個體目前的容量很大時,DocumentDB 無伺服器會以較大的增量擴展,而不是從較小的容量啟動執行個體。因此,如果您指定相對較大的最大容量,且執行個體花費大部分時間接近該容量,請考慮增加最小 DCU 設定。如此一來,閒置執行個體可以更快地擴展到最大容量。
某些執行個體限制取決於無伺服器執行個體的目前容量,例如連線限制、游標限制和開放交易限制。如果執行個體目前的容量很小,則限制也會相對較小。如果這些限制是將您的無伺服器執行個體縮減至其
MinCapacity
值時的問題,請考慮增加MinCapacity
至較高的值。如需詳細資訊,請參閱Amazon DocumentDB 無伺服器執行個體限制。此外,如果
MinCapacity
設定為小於或等於 1.0 DCUs例如作用中連線限制、游標限制和開放交易限制,則某些執行個體限制會限制為較低的最大值。如果這些上限限制不足以滿足您的工作負載,請使用至少 1.5 個 DCUsMinCapacity
的值。如需詳細資訊,請參閱Amazon DocumentDB 無伺服器執行個體限制。
如需如何修改叢集擴展組態的說明,請參閱 管理 Amazon DocumentDB 無伺服器。
選擇 DocumentDB 無伺服器叢集MaxCapacity
的設定
總是為 DocumentDB 無伺服器容量上限設定選擇一些高值很吸引人。較大的最大容量可讓執行個體在執行密集型工作負載時擴展最多。較低的值可避免未預期的收費可能性。依據您使用該叢集的方式及您設定的其他設定,最有效的值可能高於或低於您最初想象的值。在選擇最大容量設定時,請考慮下列因素:
最大容量必須至少與最小容量相同。您可將最小和最大容量設定為相同。但是,在這種情況下,容量永遠不會擴展或縮小。因此,除了在測試情況下,對最小和最大容量使用相同的值並不合適。
最大容量必須至少為 1.0 DCUs且最多必須為 256 DCUs。
我們建議您監控無伺服器執行個體的擴展和資源用量。如果您的無伺服器執行個體經常擴展到最大容量並達到資源限制 (例如,當
DCUUtilization
指標為 100.0 時),建議您選取較高的MaxCapacity
值。如需詳細資訊,請參閱監控 Amazon DocumentDB 無伺服器。如果您通常會修改佈建執行個體的執行個體類別,以預期工作負載特別高或低,您可以使用該體驗來估計同等的 DocumentDB 無伺服器容量範圍。若要判斷佈建 Amazon DocumentDB 執行個體的記憶體大小,請參閱 執行個體限制。
例如,假設您在叢集具有高工作負載時使用
db.r6g.4xlarge
執行個體類別。該執行個體類別有 128 GiB 的記憶體。因此,您可以指定最大 DCU 設定 64,以設定可擴展到大約相同容量的無伺服器執行個體。這是因為每個 DCU 對應大約 2 GiB 的記憶體。您可以指定更高的值,讓執行個體進一步擴展,以防您的db.r6g.4xlarge
執行個體有時沒有足夠的容量來有效處理工作負載。如果您的資料庫用量有預算上限,請選擇保持在該上限內的值,即使您的所有無伺服器執行個體始終以最大容量執行。請記住,當您的叢集中有 n 個無伺服器執行個體時,叢集隨時可以使用的理論無伺服器容量上限是叢集最大 DCU 設定的 n 倍。(實際消耗量可能會減少,例如,若某些讀取器獨立於寫入器擴展。)
如果您使用無伺服器讀取器執行個體從寫入器執行個體卸載一些唯讀工作負載,您可能可以選擇較低的最大容量設定。這樣做是為了反映每個讀取器執行個體不需要像叢集只包含單一執行個體一樣擴展。
假設您想要防止因資料庫參數設定錯誤或應用程式中的效率低查詢而造成的過度使用。於這種情況下,您可透過選擇低於您可設定的絕對最高容量設定來避免意外過度使用。
若因實際使用者活動所引起的峯值很少,但確實發生,您可在選擇最大容量設定時考慮這些情況。若優先順序是讓應用程式以完整的效能和可擴展性持續執行,您可指定一個高於正常用量下所觀察到的最大容量設定。若應用程式可在活動極端高峯期間以縮減的輸送量執行,則可選擇稍低的最大容量設定。確保您選擇的設定仍具有足夠的記憶體和 CPU 資源,以保持應用程式的執行。
如果您在叢集中開啟會增加每個執行個體記憶體用量的設定,請在決定最大 DCU 值時考慮該記憶體。這類設定包括績效詳情的設定。請確定最大 DCU 值允許無伺服器執行個體在使用這些功能時擴展到足以處理工作負載的程度。如需結合低最大 DCU 設定和施加記憶體負荷的 Amazon DocumentDB 功能所造成的問題疑難排解資訊,請參閱 避免記憶體不足錯誤(下方)。
特別是,我們建議將下列最低需求
MaxCapacity
用於指定的功能 (這些建議可能會有所變更):在具有大型資料磁碟區的叢集上建立無伺服器執行個體 – 2 個 DCUs(這包括建立無伺服器執行個體作為叢集還原的一部分)。
某些執行個體限制取決於執行個體目前的容量,例如連線限制、游標限制和開放交易限制。選擇工作負載
MaxCapacity
的值時,請務必謹記這些執行個體限制,以避免其中一個限制造成瓶頸。如需詳細資訊,請參閱Amazon DocumentDB 無伺服器執行個體限制。
如需如何修改叢集擴展組態的說明,請參閱 管理 Amazon DocumentDB 無伺服器。
避免記憶體不足錯誤
如果其中一個 DocumentDB 無伺服器執行個體持續達到容量上限,Amazon DocumentDB 會將執行個體設定為不相容參數的狀態,以指出此條件。雖然執行個體具有不相容參數狀態,但某些操作會遭到封鎖。例如,您無法升級引擎版本。如需 Amazon DocumentDB 執行個體狀態的詳細資訊,請參閱監控 Amazon DocumentDB 執行個體的狀態。
一般而言,當執行個體因為out-of-memory錯誤而頻繁重新啟動時,就會進入此狀態。當這種類型的重新啟動發生時,Amazon DocumentDB 會記錄事件。若要檢視資源事件,請參閱 檢視 Amazon DocumentDB 事件。由於開啟 Performance Insights 等設定而造成額外負荷,因此可能會發生異常高的記憶體使用量。它也可以來自執行個體上的繁重工作負載,或來自管理與大量結構描述物件相關聯的中繼資料。
如果記憶體壓力降低,使得執行個體不常達到最大容量,Amazon DocumentDB 會自動將執行個體狀態變更為可用。
如要從此狀況復原,您可進行下列部分或全部動作:
透過變更叢集的最小 DocumentDB 容量單位 (DCU) 值,提高無伺服器執行個體的容量下限。如此可避免閒置資料庫縮減規模至記憶體容量少於叢集中啟用功能所需的容量問題。變更叢集的 DCU 設定後,重新啟動無伺服器執行個體。這樣做會評估 Amazon DocumentDB 是否可以將狀態重設回可用狀態。
透過變更叢集的最大 DCU 值,提高無伺服器執行個體的容量上限。如此可避免繁忙的資料庫無法擴充規模至具足夠記憶體的容量,以滿足叢集和資料庫工作負載中所開啟功能的問題。變更叢集的 DCU 設定後,重新啟動無伺服器執行個體。這樣做會評估 Amazon DocumentDB 是否可以將狀態重設回可用狀態。
請關閉需要記憶體額外負荷的組態設定。例如,假設您已開啟績效詳情等功能,但不使用該功能。若是如此,您可以將其關閉。或者,您可以提高叢集的容量下限和上限值,以考慮這些類型的功能所使用的記憶體。如需有關選擇最小和最大容量設定的指導方針,請參閱 選擇 DocumentDB 無伺服器叢集的擴展容量範圍。
減少執行個體上的工作負載。例如,您可以將讀取器執行個體新增至叢集,將唯讀查詢的負載分散到更多執行個體。
為什麼我的無伺服器執行個體沒有縮減規模?
在某些情況下,即使資料庫沒有負載,DocumentDB 無伺服器也不會縮減至最小容量。這種情況可能是由於下列原因而發生:
Performance Insights 可以增加資源用量,並防止資料庫縮減至最小容量。重要功能如下所示:
如果讀取器執行個體未縮減到最小,且容量維持與寫入器執行個體相同或更高,請檢查讀取器執行個體的優先順序層。第 0 層或第 1 層中的 DocumentDB 無伺服器讀取器執行個體,其容量至少與寫入器執行個體一樣高。將讀取器的優先順序方案變更為 2 或更高,以便其可以獨立縱向擴展和縮減,與寫入器無關。如需詳細資訊,請參閱Amazon DocumentDB 無伺服器擴展。
繁重的資料庫工作負載會增加資源使用量。
大型資料庫磁碟區會增加資源使用量。Amazon DocumentDB 使用記憶體和 CPU 資源進行叢集管理。Amazon DocumentDB 需要更多 CPU 和記憶體來管理資料庫磁碟區的叢集。如果叢集的容量下限低於叢集管理所需的最小容量,則您的叢集將不會縮減至容量下限。
背景維護活動可以定期增加資源用量。
如果資料庫仍未縮減規模至設定的最小容量,請停止並重新啟動資料庫,以回收任何可能已隨時間建立的記憶體片段。停止和啟動資料庫會導致停機,因此我們建議您謹慎執行此動作。