針對Linux或 Windows 上的 Azure 虛擬機效能進行疑難解答
本文說明虛擬機 (VM) 透過監視和觀察瓶頸進行一般效能疑難解答,並針對可能發生的問題提供可能的補救措施。 除了監視之外,您也可以使用 Perfinsights 來提供報告,其中包含有關 IO/CPU/記憶體的最佳做法建議和主要瓶頸。 Perfinsights 適用於 Azure 中的 Windows 和 Linux VM。
本文將逐步解說如何使用監視來診斷效能瓶頸。
啟用監視
Azure IAAS 虛擬機監視
若要監視客體 VM,請使用 Azure VM 監視,這會警示您特定的高階資源條件。 若要檢查您是否已啟用 VM 診斷,請參閱 Azure 資源記錄概觀。 如果您看到下列內容,則很可能未啟用診斷:
透過 microsoft Azure 入口網站 啟用 VM 診斷
若要啟用 VM 診斷:
移至 VM。
按兩下 [診斷設定]。
選取記憶體帳戶,然後按兩下 [啟用來賓層級監視]。
您可以從 [診斷設定] 底下的 [ 代理 程式] 索引標籤,檢查用於診斷設定 的記憶體帳戶。
透過 Azure 入口網站 啟用記憶體帳戶診斷
當我們想要分析 Azure 中虛擬機的 IO 效能時,記憶體是非常重要的層級。 針對記憶體相關計量,我們需要啟用診斷做為額外的步驟。 如果我們只想要分析記憶體相關的計數器,也可以啟用此功能。
選取 VM,以識別 VM) (或帳戶使用的記憶體帳戶。 按兩下 [設定],然後按兩下 [ 磁碟]:
在入口網站中,移至 VM 的記憶體帳戶 (或) 帳戶,並執行下列步驟:
- 按兩下您在上述步驟中找到的記憶體帳戶概觀。
- 將會顯示預設計量。
按兩下任何計量,這會顯示另一個刀鋒視窗,其中包含更多設定和新增計量的選項。
若要設定這些選項:
- 選 取 [計量]。
- 選取 資源 (記憶體帳戶) 。
- 選取 命名空間
- 選 取 [計量]。
- 選取匯總的類型
- 您可以在儀錶板上釘選此檢視。
觀察瓶頸
一旦我們針對所需的計量完成初始設定程式,並在啟用 VM 和相關記憶體帳戶的診斷之後,我們可以移至分析階段。
存取監視
選取您想要調查的 Azure VM,然後選取 [ 監視]。
觀察的時間軸
若要識別您是否有任何資源瓶頸,請檢閱您的數據。 如果您發現計算機已正常執行,但已回報效能最近已降低,請在問題發生期間和之後,檢閱包含效能計量數據的數據時間範圍,
檢查CPU瓶頸
- 編輯圖形。
- 設定時間範圍。
- 接著,您需要在計數器中新增:CPU 百分比客體 OS
- 儲存。
CPU 觀察趨勢
查看效能問題時,請留意趨勢,並了解這些趨勢是否會影響您。 在下一節中,我們將使用入口網站中的監視圖表來顯示趨勢。 它們也適用於在相同時間週期中交叉參考差異資源行為。 若要自定義圖形,請按兩下 [Azure 監視器資料平臺]。
Spiking – Spiking 可能與排程的工作/已知事件有關。 如果您可以識別工作,請判斷工作是否在必要的效能層級執行。 如果效能可接受,您可能不需要增加資源。
尖峰和常數 – 通常表示新的工作負載。 如果它不是可辨識的工作負載,請在 VM 中啟用監視,以找出 (或進程) 造成行為的程式。 一旦辨識程序之後,判斷增加的耗用量是由效率不佳的程式代碼還是一般耗用量所造成。 如果正常耗用,請決定進程是否在必要的效能層級運作。
常數 – 判斷您的 VM 是否一律在此層級執行,或是否只在啟用診斷後才在該層級執行。 如果是,請識別造成問題的進程 (或進程) ,並考慮新增更多資源。
穩定增加 – 耗用量持續增加通常是沒有效率的程序代碼,或是處理更多使用者工作負載的程式。
高 CPU 使用率補救
如果您的應用程式或行程未在正確的效能層級執行,而且您看到 95% + CPU 使用率常數,您可以執行下列其中一項工作:
- 立即緩解 - 將 VM 的大小增加為具有更多核心的大小
- 了解問題 – 找出應用程式/程式並據此進行疑難解答。
如果您已增加 VM,且 CPU 仍在執行 95%,請判斷此設定是否提供較佳的效能或更高的應用程式輸送量,以達到可接受的層級。 如果沒有,請針對該個別的 application\process 進行疑難解答。
您可以使用適用於 Windows 或 Linux 的 Perfinsights 來分析哪個程式正在推動 CPU 耗用量。
檢查記憶體瓶頸
若要檢視計量:
- 新增區段。
- 新增磚。
- 開啟資源庫。
- 選取 [記憶體使用量],然後拖曳。 停駐磚時,以滑鼠右鍵按下並選取 [6x4]。
記憶體觀察趨勢
記憶體使用量會顯示 VM 所耗用的記憶體數量。 了解趨勢,以及它是否對應至您看到問題的時間。 您應該一律有超過 100 MB 的可用記憶體。
尖峰和常數/持續穩定耗用量 - 高記憶體使用率可能不是效能不佳的原因,因為某些應用程式,例如關係資料庫引擎會配置大量的記憶體,而且此使用率可能不顯著。 不過,如果有多個記憶體不足的應用程式,您可能會看到記憶體爭用導致修剪和分頁/交換至磁碟的效能不佳。 此效能不佳通常是造成應用程式效能影響的明顯原因。
穩定增加耗用量 – 可能的應用程式「正在準備」,這種耗用量在啟動的資料庫引擎中很常見。 不過,它也可能是應用程式記憶體流失的徵兆。 識別應用程式並了解行為是否為預期。
頁面或交換檔案使用方式 – 檢查您使用的是位於 D:) 或 Linux 交換檔 (上的 /dev/sdb
Windows 頁面檔 (,) 正在大量使用。 如果您在這些磁碟區上除了這些檔案之外沒有任何內容,請檢查這些磁碟上是否有高讀取/寫入。 此問題表示記憶體不足的情況。
高記憶體使用率補救
若要解決高記憶體使用率,請執行下列任何一項工作:
- 如需立即緩解或頁面或交換檔案使用量 - 將 VM 大小增加為具有更多記憶體的 VM 大小,然後監視。
- 了解問題 – 找出應用程式/程式,並針對識別高耗用記憶體應用程式進行疑難解答。
- 如果您知道應用程式,請查看是否可以限制記憶體配置。
如果升級至較大的 VM 之後,您發現在 100% 之前仍持續穩定增加,請識別應用程式/程式和疑難解答。
您可以使用適用於 Windows 或 Linux 的 Perfinsights 來分析哪些程式正在推動記憶體耗用量。
檢查磁碟瓶頸
若要檢查 VM 的記憶體子系統,請使用 VM 診斷中的計數器和記憶體帳戶診斷,檢查 Azure VM 層級的診斷。
針對 VM 內的特定疑難解答,您可以使用適用於 Windows 或 Linux 的 Perfinsights,這有助於分析驅動 IO 的程式。
請注意,我們沒有區域備援和 進階儲存體 帳戶的計數器。 對於與這些計數器相關的問題,請提出支援案例。
在監視中檢視記憶體帳戶診斷
若要處理下列專案,請移至入口網站中 VM 的記憶體帳戶:
- 編輯監視圖形。
- 設定時間範圍。
- 新增下列步驟中所述的計數器。
- 儲存變更。
磁碟只會觀察標準記憶體 (趨勢)
若要識別記憶體的問題,請查看記憶體帳戶診斷和 VM 診斷中的效能計量。
針對下列每項檢查,尋找問題在問題時間範圍內發生的主要趨勢。
檢查 Azure 記憶體可用性 – 新增記憶體帳戶計量:可用性
如果您看到可用性下降,平臺可能有問題,請檢查 Azure 狀態。 如果未顯示任何問題,請提出新的支援要求。
檢查 Azure 記憶體逾時 - 新增記憶體帳戶計量
- ClientTimeOutError
- ServerTimeOutError
- AverageE2ELatency
- AverageServerLatency
- TotalRequests
*TimeOutError 計量中的值表示 IO 作業花費的時間太長且逾時。完成後續步驟將有助於找出可能的原因。
在 TimeOutErrors 同時增加 AverageServerLatency 可能是平台問題。 在此情況下,提出新的支援要求。
AverageE2ELatency 代表客戶端延遲。 確認應用程式如何執行 IOPS。 尋找增加或持續偏高的 TotalRequests 計量。 此計量代表 IOPS。 如果您開始達到記憶體帳戶或單一 VHD 的限制,延遲可能會與節流相關。
檢查 Azure 記憶體節流 - 新增記憶體帳戶計量:ThrottlingError
節流的值表示您正在記憶體帳戶層級進行節流,這表示您達到帳戶的 IOPS 限制。 您可以藉由檢查度量 TotalRequests 來判斷是否達到 IOP 臨界值。
請注意,每個 VHD 的限制為 500 IOPS 或 60 MBit,但受限於每個記憶體帳戶 20000 IOPS 的累計限制。
使用此計量時,您無法分辨哪些 Blob 造成節流,以及哪些 Blob 受到節流影響。 不過,您會達到記憶體帳戶的 IOPS 或輸入/輸出限制。
若要識別您是否達到 IOPS 限制,請移至記憶體帳戶診斷並檢查 TotalRequests,查看您是否接近 2 萬個 TotalRequests。 識別模式中的變更、您是否第一次看到限制,或此限制是否會在特定時間發生。
使用標準記憶體下的新磁碟供應專案時,IOPS 和輸送量限制可能會不同,但標準記憶體帳戶的累積限制為 20000 IOPS (進階記憶體在帳戶或磁碟層級) 有不同的限制。 深入瞭解不同的標準記憶體磁碟供應專案和每個磁碟限制:
參考資料
記憶體帳戶的頻寬是以記憶體帳戶計量來測量:TotalIngress 和 TotalEgress。 您有不同的頻寬閾值,視備援類型和區域而定。
針對記憶體帳戶備援類型和區域的輸入和輸出限制,檢查 TotalIngress 和 TotalEgress。
檢查連結至 VM 之 VHD 的輸送量限制。 新增 VM 計量磁碟讀取和寫入。
標準記憶體下的新磁碟供應專案有不同的 IOPS 和輸送量限制, (每個 VHD) 不會公開 IOPS。 查看數據,以查看您是否達到 VM 層級的 VHD () 的合併輸送量 MB 限制,使用磁碟讀取和寫入,然後優化您的 VM 記憶體設定,以調整超過單一 VHD 限制。 深入瞭解不同的標準記憶體磁碟供應專案和每個磁碟限制:
高磁碟使用率/延遲補救
降低客戶端延遲並優化 VM IO 以調整超過 VHD 限制
減少節流
如果達到記憶體帳戶的上限,請重新平衡記憶體帳戶之間的 VHD。 請參閱 Azure 記憶體延展性和效能目標。
增加輸送量並減少延遲
如果您有延遲敏感性應用程式且需要高輸送量,請使用 DS 和 GS 系列 VM 將 VHD 移轉至 Azure 進階記憶體。
這些文章討論特定案例:
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應