持續效能優化的建議
適用于此 Azure Well-Architected Framework 效能效率檢查清單建議:
PE:12 | 持續優化效能。 專注于顯示一段時間的效能變差的元件,例如資料庫和網路功能。 |
---|
本指南說明持續效能優化的建議。 持續效能優化是持續監視、分析及改善效能效率的程式。 效能效率會因應需求增加和減少。 效能優化必須是工作負載生命週期中的持續活動。 工作負載效能通常會隨著時間降低或過長,而考慮的因素包括使用模式、需求、功能和技術債務的變更。
定義
詞彙 | 定義 |
---|---|
資料分層 | 一種儲存策略,涉及根據資料的存取頻率分類資料,並據以儲存在儲存層上。 |
技術債務 | 累積的效率不佳、次佳的設計選擇,或是在開發程式期間刻意採取的快捷方式,以加快程式碼傳遞速度。 |
存留時間 | 設定資料到期時間的機制。 |
主要設計策略
效能效率是當工作負載容量符合實際使用量時。 過度效能的工作負載與效能不佳的工作負載一樣有問題。 取捨不同。 效能過高會影響成本優化。 效能不佳會影響使用者。 效能效率的關鍵在於監視、調整及測試一段時間。 您必須定期檢閱效能計量,並視需要進行調整,以確保工作負載有效率。 需要測試所有變更前和實作後,才能達到效能目標。
開發效能文化特性
效能文化是預期持續改善的環境,而小組會從生產環境學習。 效能優化需要特殊技術。 工作負載小組需要適當的技能和思維,才能將效能優化,以符合增加和減少的需求。 您也需要配置其時間,以支援在發生效能問題時所需的監視和補救。 這些小組需要清楚的預期。 例如,效能目標、基準和偏差臨界值 () 必須高度可見和社交化,才能接受基準。
取捨:持續效能優化需要具有正確技能和時間的小組,才能找出並修正效能問題。 將人員專用於效能會增加營運成本。 如果您有有限的人員資源,持續效能優化可能會讓其他作業工作花費時間。
評估新的平臺功能
評估新的平臺功能牽涉到檢查可改善效能效率的平臺新功能和工具,例如優化儲存解決方案、快取機制或資源管理工具。 新的平臺功能可以開啟提升效能效率的途徑。 讓您的平臺和工具保持在最新狀態,以確保您使用最新的創新與最佳做法。 持續監視這些新增專案的意見反應和效能計量,以精簡您的方法。
排定優化工作的優先順序
主動優化效能表示在發生任何效能問題之前,採取主動措施來改善和增強工作負載的效能。 使用主動式量值牽涉到識別潛在的瓶頸、監視效能計量,以及實作優化,以確保工作負載有效率地運作,並符合所需的效能目標。 根據影響元件、重要流程和技術債務的分析,您可以實作每個領域特定的效能優化。 改善可能包括程式碼變更、基礎結構調整或組態更新。
優先處理元件
工作負載通常會有一些元件,例如資料庫和網路元件,這些元件很容易隨著時間效能降低。 隨著工作負載演進和使用模式變更,這些變更通常會影響工作負載中個別元件的效能。 資料庫中的資料增加可能會導致查詢執行時間較長,以及資料擷取速度較慢。 使用模式的變更可能會導致次佳查詢設計。 一旦有效率的查詢隨著工作負載演進而變得效率不佳。 效率不佳的查詢可能會耗用過多的資源,並降低資料庫效能。 增加的工作負載使用量可能會導致較高的網路流量,導致壅塞和延遲問題。
請務必持續努力將這些元件的效能優化。 主動識別並解決工作負載中的效能問題。 藉由優先處理已知的啟動元件,您可以主動解決潛在的效能問題,並確保工作負載的作業順暢。 這可能涉及實作效能微調技術、優化資源配置,或視需要升級硬體或軟體元件。
設定重要流程的優先順序
重要流程是工作負載中最重要的高優先順序進程或工作流程。 藉由優先處理這些重要流程,您可以確定工作負載的最重要部分已針對效能優化。 瞭解哪些流程很重要,有助於排定優化工作的優先順序。 優化應用程式最重要區域的效能效率,可提供最高的投資報酬率。 您應該監視重要流程和最熱門的頁面。 尋找讓它們更有效率的方式。
自動化效能優化
自動化可以消除重複且耗時的手動程式,使其有效率地執行。 自動化可減少人為錯誤的機會,並確保執行優化工作的一致性。 藉由自動化這些工作,您也可以釋出人員專注于更複雜的活動與增加價值的活動。 您可以將自動化套用至各種工作,例如效能測試、部署和監視:
自動化效能測試:使用 JMeter、K6 或 Selenium 等自動化效能測試控管來模擬不同的工作負載和案例。
自動化部署:實作自動化部署程式,以確保一致且無錯誤的部署。 使用 CI/CD 工具來自動化部署程式。 這些工具可協助您在用來針對端點進行測試、檢查 HTTP 狀態,甚至是驗證資料品質與變化時識別效能瓶頸。
監視和警示:設定自動化監視和警示系統,以持續監視效能計量,並偵測任何偏差或異常狀況。 偵測到效能問題時,可以觸發自動化警示來通知適當的小組或個人。
事件管理:實作自動化事件管理系統,以接收警示、建立票證,並將票證指派給適當的小組以解決問題。 這些步驟有助於確保立即解決效能問題,並指派給正確的資源。
自動化診斷:開發可分析效能資料的自動化診斷工具或腳本,並找出效能問題的根本原因。 這些工具可協助找出造成效能問題之系統的特定區域或元件。
自動化補救動作:定義並實作可在偵測到特定效能問題時觸發的自動化補救動作。 這些動作可能包括重新開機服務、調整資源配置、清除快取,或實作其他效能優化技術。
自我修復系統:藉由將已知效能問題的復原程式自動化,將自我修復功能建置到您的系統中。 這項功能牽涉到自動修正或調整系統設定,以還原最佳效能。
解決技術債務
技術債務是指在開發程式期間,累積的效率不佳、次佳的設計選擇,或可能會影響效能的快捷方式。 技術債務、不清楚的程式碼和過度複雜的實作,可讓效能效率更難以達成。 解決技術債務牽涉到識別和解決這些問題,以改善工作負載的整體效能和可維護性。 這項工作可能包括重構程式碼、優化資料庫查詢、改善架構設計,或實作最佳做法。 或許您引進了技術債務以符合期限,但您需要解決技術債務,因為您在一段時間內將效能效率優化。
優化資料庫
持續優化資料庫牽涉到識別和實作優化,以確保資料庫可以處理負載、提供快速回應時間,以及將資源使用率降到最低。 藉由定期優化資料庫,您可以改善應用程式效能、減少停機時間,以及增強整體使用者體驗。
優化資料庫查詢:撰寫不佳的 SQL 語句可能會降低資料庫效能。 沒有效率的 JOIN 條件可能會導致不必要的資料處理。 複雜的子查詢、巢狀查詢和過多函式可以降低執行速度。 擷取太多資料的查詢應該重寫。 您應該識別最常見的或重要的資料庫查詢,並將其優化。 優化有助於確保更快速的查詢。
維護索引:評估您的索引編制策略,以確保索引已正確設計和維護。 索引維護包括識別未使用或備援索引,以及建立符合查詢模式的索引。 資料庫索引有助於加速資料擷取作業。 對於關係資料庫,您必須監視索引片段。 您應該定期重建或重新組織索引。 針對非關係資料庫,您必須為您的工作負載挑選正確的索引編制原則。 在可用的資料庫上使用自動調整。 這些功能包括自動建立遺漏的索引、卸載未使用的索引,以及計畫更正。 如需詳細資訊,請參閱 維護索引以改善效能。
檢閱模型設計:檢閱資料模型,以確保您可以針對應用程式的特定需求進行優化。 改善查詢效能和資料擷取可能涉及反正規化、資料分割或其他技術。
優化資料庫組態:優化資料庫組態設定,例如記憶體配置、磁片 I/O 和並行設定,以最大化效能和資源使用率。
優化資料效率
優化資料效率是確保資料以最有效率的方式儲存、處理和存取的程式。 資料階層處理和使用存留時間 (TTL) 是可用來優化資料效率的技術。 您可以在各種資料儲存案例中套用這些技術,例如資料庫、檔案系統或物件儲存體。
使用資料階層處理:資料階層處理牽涉到根據資料存取的重要性或頻率來分類資料,並據以將資料儲存在不同的層中。 設定資料分層可讓您更有效率地使用儲存體資源並改善效能。 經常存取或關鍵資料可以儲存在高效能層中,而較不常存取或較不重要的資料可以儲存在較低成本層中。 目標是檢閱一段時間的資料使用量,以確保資料位於正確的層。 當資料優先順序變更時,資料應該從一層移到另一層。
實作存留時間:存留時間是設定資料到期時間的機制。 存留時間可讓資料在特定期間後自動刪除或封存,以減少儲存體需求並改善資料管理。 藉由設定適當的存留時間,您可以允許移除不必要的資料、釋出儲存空間並提升整體效率。 會話資料、暫存檔和快取資料是存留時間的常見目標。 資料庫專案也可以有存留時間。
風險:存留時間太短,可能會產生效能問題。
Azure 設施
自動化效能優化:Azure Advisor 會根據工作負載遙測提供自動 效能建議 。 您應該定期檢閱並處理這些建議。 Azure 監視器可讓您即時深入解析系統的效能,並可讓您根據特定的效能計量來設定警示。 Azure Log Analytics 提供所收集記錄和計量的自動化診斷和分析。 Azure 應用程式 Insights 之類的工具可提供優化效能的見解和建議。
若要自動化補救,請使用自動化工具或腳本,在觸發警示時自動執行補救動作。 您可以使用Azure 自動化、Azure Functions或自訂自動化解決方案。
Azure 可讓效能測試模擬不同的使用者案例和工作負載。 自動化測試可協助您找出效能瓶頸,並據以優化您的系統。 Azure DevOps 之類的工具可以自動化效能測試。
優化資料庫:SQL 系列產品有許多 內建功能 ,可讓您監視和補救 SQL 資料庫效能。 您應該使用這些功能來維護資料庫效能。 Azure SQL Database 具有自動調整功能,可持續監視及改善查詢。 您應該使用這項功能自動改善 SQL 查詢。
您可以使用 Azure Cosmos DB 的功能來 自訂索引編制原則 。 自訂原則以符合工作負載的效能需求。
優化資料效率:資料分層可讓您根據資料存取頻率和重要性,將資料儲存在不同的階層中。 這有助於將儲存體成本和效能優化。 Azure 提供不同的儲存層,例如 Blob 資料的經常性存取層、非經常性存取層和封存層。 經常性存取層已針對經常存取的資料進行優化,非經常性存取層適用于不常存取的資料,而封存層則適用于很少存取的資料。 藉由使用最適合您資料的儲存體存取層,您可以確保有效率的資料儲存和擷取。
相關連結
- 將索引維護最佳化以改善查詢效能並降低資源耗用量
- 使用 Azure Advisor 改善 Azure 應用程式的效能
- 在 Azure SQL Database 和 Azure SQL 受控執行個體中進行自動微調
- Azure Cosmos DB 中的索引編製原則
效能效率檢查清單
請參閱一組完整的建議。