共用方式為


針對Linux或 Windows 上的 Azure 虛擬機效能進行疑難解答

本文說明虛擬機 (VM) 透過監視和觀察瓶頸進行一般效能疑難解答,並針對可能發生的問題提供可能的補救措施。 除了監視之外,您也可以使用 Perfinsights 來提供報告,其中包含有關 IO/CPU/記憶體的最佳做法建議和主要瓶頸。 Perfinsights 適用於 Azure 中的 WindowsLinux VM。

本文將逐步解說如何使用監視來診斷效能瓶頸。

啟用監視

Azure IAAS 虛擬機監視

若要監視客體 VM,請使用 Azure VM 監視,這會警示您特定的高階資源條件。 若要檢查您是否已啟用 VM 診斷,請參閱 Azure 資源記錄概觀。 如果您看到下列內容,則很可能未啟用診斷:

顯示 [監視可能未啟用] 訊息的螢幕快照。

透過 microsoft Azure 入口網站 啟用 VM 診斷

若要啟用 VM 診斷:

  1. 移至 VM。

  2. 按兩下 [診斷設定]

  3. 選取記憶體帳戶,然後按兩下 [啟用來賓層級監視]

    此螢幕快照顯示啟用 VM 診斷的步驟。

您可以從 [診斷設定] 底下的 [ 代理 程式] 索引標籤,檢查用於診斷設定 的記憶體帳戶。

螢幕快照醒目提示 [代理程式] 索引標籤下的記憶體帳戶。

透過 Azure 入口網站 啟用記憶體帳戶診斷

當我們想要分析 Azure 中虛擬機的 IO 效能時,記憶體是非常重要的層級。 針對記憶體相關計量,我們需要啟用診斷做為額外的步驟。 如果我們只想要分析記憶體相關的計數器,也可以啟用此功能。

  1. 選取 VM,以識別 VM) (或帳戶使用的記憶體帳戶。 按兩下 [設定],然後按兩下 [ 磁碟]

    顯示磁碟下 OS 磁碟的螢幕快照。

  2. 在入口網站中,移至 VM 的記憶體帳戶 (或) 帳戶,並執行下列步驟:

    1. 按兩下您在上述步驟中找到的記憶體帳戶概觀。
    2. 將會顯示預設計量。

    螢幕快照顯示 [概觀] 底下的預設計量。

  3. 按兩下任何計量,這會顯示另一個刀鋒視窗,其中包含更多設定和新增計量的選項。

    此螢幕快照顯示新增和設定計量的步驟。

若要設定這些選項:

  1. 取 [計量]
  2. 選取 資源 (記憶體帳戶) 。
  3. 選取 命名空間
  4. 取 [計量]
  5. 選取匯總的類型
  6. 您可以在儀錶板上釘選此檢視。

觀察瓶頸

一旦我們針對所需的計量完成初始設定程式,並在啟用 VM 和相關記憶體帳戶的診斷之後,我們可以移至分析階段。

存取監視

選取您想要調查的 Azure VM,然後選取 [ 監視]

顯示 [監視] 面板的螢幕快照。

觀察的時間軸

若要識別您是否有任何資源瓶頸,請檢閱您的數據。 如果您發現計算機已正常執行,但已回報效能最近已降低,請在問題發生期間和之後,檢閱包含效能計量數據的數據時間範圍,

檢查CPU瓶頸

此螢幕快照顯示檢查 CPU 瓶頸的步驟。

  1. 編輯圖形。
  2. 設定時間範圍。
  3. 接著,您需要在計數器中新增:CPU 百分比客體 OS
  4. 儲存。

查看效能問題時,請留意趨勢,並了解這些趨勢是否會影響您。 在下一節中,我們將使用入口網站中的監視圖表來顯示趨勢。 它們也適用於在相同時間週期中交叉參考差異資源行為。 若要自定義圖形,請按兩下 [Azure 監視器資料平臺]

Spiking – Spiking 可能與排程的工作/已知事件有關。 如果您可以識別工作,請判斷工作是否在必要的效能層級執行。 如果效能可接受,您可能不需要增加資源。

尖峰和常數 – 通常表示新的工作負載。 如果它不是可辨識的工作負載,請在 VM 中啟用監視,以找出 (或進程) 造成行為的程式。 一旦辨識程序之後,判斷增加的耗用量是由效率不佳的程式代碼還是一般耗用量所造成。 如果正常耗用,請決定進程是否在必要的效能層級運作。

常數 – 判斷您的 VM 是否一律在此層級執行,或是否只在啟用診斷後才在該層級執行。 如果是,請識別造成問題的進程 (或進程) ,並考慮新增更多資源。

穩定增加 – 耗用量持續增加通常是沒有效率的程序代碼,或是處理更多使用者工作負載的程式。

高 CPU 使用率補救

如果您的應用程式或行程未在正確的效能層級執行,而且您看到 95% + CPU 使用率常數,您可以執行下列其中一項工作:

  • 立即緩解 - 將 VM 的大小增加為具有更多核心的大小
  • 了解問題 – 找出應用程式/程式並據此進行疑難解答。

如果您已增加 VM,且 CPU 仍在執行 95%,請判斷此設定是否提供較佳的效能或更高的應用程式輸送量,以達到可接受的層級。 如果沒有,請針對該個別的 application\process 進行疑難解答。

您可以使用適用於 WindowsLinux 的 Perfinsights 來分析哪個程式正在推動 CPU 耗用量。

檢查記憶體瓶頸

若要檢視計量:

  1. 新增區段。
  2. 新增磚。
  3. 開啟資源庫。
  4. 選取 [記憶體使用量],然後拖曳。 停駐磚時,以滑鼠右鍵按下並選取 [6x4]

記憶體使用量會顯示 VM 所耗用的記憶體數量。 了解趨勢,以及它是否對應至您看到問題的時間。 您應該一律有超過 100 MB 的可用記憶體。

尖峰和常數/持續穩定耗用量 - 高記憶體使用率可能不是效能不佳的原因,因為某些應用程式,例如關係資料庫引擎會配置大量的記憶體,而且此使用率可能不顯著。 不過,如果有多個記憶體不足的應用程式,您可能會看到記憶體爭用導致修剪和分頁/交換至磁碟的效能不佳。 此效能不佳通常是造成應用程式效能影響的明顯原因。

穩定增加耗用量 – 可能的應用程式「正在準備」,這種耗用量在啟動的資料庫引擎中很常見。 不過,它也可能是應用程式記憶體流失的徵兆。 識別應用程式並了解行為是否為預期。

頁面或交換檔案使用方式 – 檢查您使用的是位於 D:) 或 Linux 交換檔 (上的 /dev/sdb Windows 頁面檔 (,) 正在大量使用。 如果您在這些磁碟區上除了這些檔案之外沒有任何內容,請檢查這些磁碟上是否有高讀取/寫入。 此問題表示記憶體不足的情況。

高記憶體使用率補救

若要解決高記憶體使用率,請執行下列任何一項工作:

  • 如需立即緩解或頁面或交換檔案使用量 - 將 VM 大小增加為具有更多記憶體的 VM 大小,然後監視。
  • 了解問題 – 找出應用程式/程式,並針對識別高耗用記憶體應用程式進行疑難解答。
  • 如果您知道應用程式,請查看是否可以限制記憶體配置。

如果升級至較大的 VM 之後,您發現在 100% 之前仍持續穩定增加,請識別應用程式/程式和疑難解答。

您可以使用適用於 WindowsLinux 的 Perfinsights 來分析哪些程式正在推動記憶體耗用量。

檢查磁碟瓶頸

若要檢查 VM 的記憶體子系統,請使用 VM 診斷中的計數器和記憶體帳戶診斷,檢查 Azure VM 層級的診斷。

針對 VM 內的特定疑難解答,您可以使用適用於 WindowsLinux 的 Perfinsights,這有助於分析驅動 IO 的程式。

請注意,我們沒有區域備援和 進階儲存體 帳戶的計數器。 對於與這些計數器相關的問題,請提出支援案例。

在監視中檢視記憶體帳戶診斷

若要處理下列專案,請移至入口網站中 VM 的記憶體帳戶:

此螢幕快照顯示在監視中檢視記憶體帳戶診斷的步驟。

  1. 編輯監視圖形。
  2. 設定時間範圍。
  3. 新增下列步驟中所述的計數器。
  4. 儲存變更。

若要識別記憶體的問題,請查看記憶體帳戶診斷和 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 意應見反社群