VM 上的 AlloyDB Omni 效能測試方法

選取說明文件版本:

本文說明在 VM 上對 AlloyDB Omni 執行效能測試的建議做法。本文假設您已熟悉 PostgreSQL。

評估成效時,請先定義您希望從測試中瞭解什麼,例如:

  • 系統可達到的最大處理量為何?
  • 特定查詢或工作負載需要多久時間?
  • 資料量增加時,效能會如何變化?
  • 這兩個系統的效能比較結果為何?
  • 資料欄引擎可將查詢效能的回應時間縮短多少?
  • 資料庫可以處理多少負載,我才需要考慮升級至更強大的機器?

瞭解成效研究的目標,有助於判斷要執行哪些基準測試、需要哪些環境,以及要收集哪些指標。

重複性

如要從效能測試得出結論,測試結果必須可重複。如果測試結果差異很大,就很難評估您在應用程式或系統設定中所做變更的影響。多次執行測試或延長測試時間,有助於提供更多資料,進而降低變異量。

理想情況下,效能測試應在與其他系統隔離的系統上執行。如果執行環境中的外部系統會影響應用程式效能,可能會導致您做出錯誤結論。在多租戶雲端環境中執行時,通常無法完全隔離,因此結果可能會有較大差異

可重複性的一部分是確保測試工作負載在執行之間保持不變。只要隨機性不會導致應用程式行為出現顯著差異,測試輸入內容中出現一些隨機性是可以接受的。如果隨機產生的用戶端輸入內容在每次執行時都會改變讀取和寫入的組合,效能就會有顯著差異。

資料庫大小、快取和 I/O 模式

請確保測試資料量能代表應用程式。如果您有數百 GB 或 TB 的資料,使用少量資料進行測試可能無法真實反映應用程式的效能。資料集的大小也會影響查詢最佳化工具的選擇。針對小型測試資料表執行的查詢可能會使用資料表掃描,這類查詢在較大規模時效能不佳,而且您不會在這個設定中找出缺少的索引。

請盡量複製應用程式的 I/O 模式。讀取與寫入的比率對應用程式的效能剖析非常重要。

基準時間長度

在複雜的系統中,系統執行時會維護大量狀態資訊:建立資料庫連線、填入快取,以及產生程序和執行緒。在效能測試開始時,如果工作負載的執行階段過短,這些元件的初始化作業可能會耗用系統資源,進而對測得的效能產生負面影響。

建議您執行效能測試至少 20 分鐘,盡可能降低系統暖機的影響。在啟動後一段時間,待系統進入穩定狀態時,測量效能,確保資料庫作業的所有層面都包含在內。舉例來說,資料庫檢查點是資料庫系統的重要功能,對效能有重大影響。如果執行在檢查點間隔前完成的簡短基準測試,就會隱藏應用程式行為中的這項重要因素。

有條不紊的測試

調整效能時,請一次只變更一個變數。如果在執行期間變更多個變數,就無法判斷是哪個變數提升了成效。事實上,多項變更可能會互相抵銷,導致您無法看到適當變更帶來的效益。如果資料庫伺服器使用率過高,請嘗試改用 vCPU 數量較多的機器,同時保持負載不變。如果資料庫伺服器未充分利用,請嘗試增加負載,同時保持 CPU 設定不變。

網路拓撲和延遲

系統的網路拓撲可能會影響效能測試結果。可用區之間的延遲時間有所不同。進行效能測試時,請確保用戶端和資料庫叢集位於相同可用區,盡可能縮短網路延遲時間,並達到最佳效能。對於處理量高、交易時間短的應用程式,這點尤其重要,因為網路延遲時間可能是整體交易回應時間的重要組成部分。

比較兩個不同系統的效能時,請確保兩個系統的網路拓撲相同。請注意,網路延遲時間的變動無法完全消除,即使在同一個可用區內,也可能因基礎網路拓撲而有延遲時間差異。

部署應用程式時,您可能想透過一般高流量網頁應用程式,進一步瞭解跨可用區延遲的影響。應用程式設有負載平衡器,可將要求傳送至部署在多個可用區的多個網路伺服器,確保高可用性。由於跨可用區延遲時間差異,延遲時間可能會因處理要求的網路伺服器而異。

下圖顯示使用 AlloyDB Omni 的網頁應用程式一般架構。用戶端要求由負載平衡器處理,負載平衡器會將每項要求轉送至其中一個網路伺服器。網路伺服器都連至 AlloyDB Omni。部分伺服器與 AlloyDB Omni 執行的區域不同,因此發出資料庫要求時會遇到較高的延遲。

流程圖:顯示典型的網頁應用程式架構。
圖 1:一般網頁應用程式架構圖。當可用區 B 的網路伺服器向資料庫發出要求時,延遲時間應該會較短,因為這些伺服器與 AlloyDB Omni 資料庫位於同一可用區。

資源監控

如要提升資料庫系統的效能,您必須監控資料庫系統和使用資料庫系統的用戶端系統資源用量。同時監控這兩個系統,可確保用戶端系統提供足夠的工作負載,在資料庫系統中取得有意義的測量結果。監控受測系統的資源使用率至關重要。監控用於驅動工作負載的用戶端系統資源使用率也同樣重要。舉例來說,如要判斷資料庫系統在 CPU 資源用盡前可支援的用戶端數量上限,您需要足夠的用戶端系統,才能產生用盡資料庫系統中所有 CPU 資源所需的工作負載。如果產生負載的用戶端機器 CPU 不足,就無法充分驅動資料庫系統。

擴充性測試

擴充性測試是效能測試的另一個面向。擴充性是指成效指標隨著工作負載特性變化而改變的情形。擴充性研究的例子包括:

  • 並行要求數量增加時,處理量和回應時間會如何變化?
  • 資料庫大小增加時,處理量和回應時間會如何變化?

擴充性測試包含多次執行工作負載,每次執行時都會改變單一維度,並收集及繪製一或多個指標。這類測試可協助您判斷系統中存在哪些瓶頸、系統在特定設定下可處理的負載量、系統可支援的最大負載量,以及負載量超出這些層級時系統的行為。

機器大小注意事項

AlloyDB Omni 為 Postgres 導入許多新功能,可提高資料庫的可靠性和可用性。執行這項作業所需的監控功能,會使用執行 AlloyDB Omni 的機器資源。極小的機器大小一開始就只有有限的記憶體和 CPU 資源,因此建議使用至少四個 vCPU 的機器大小進行基準化測試。