只有累積,沒有奇蹟

2022年6月4日 星期六

[Azure] App Service Diagnostics - Collect Memory Dump

前言
前兩篇分別介紹了 App Service Diagnostics 中的 Collect .Net Profiler Trace 與 Auto heal,分別都可以透過工具來蒐集雲端伺服器的緩慢問題分析與蒐集記憶體資訊,這一篇則是介紹如何 dump 目前伺服器 memory 的資料,以及有多個伺服器的時候該如何抓取特定的 Server memory data。若對於上述內容有問題或是不清楚的地方,歡迎提出來一起討論。

Collect Memory Dump
在 Azure 上提供非常多的分析工具可以協助開發人員找到應用程式的問題,應用程式出問題不管在地端的機房或是雲端上都是有可能會發生的,在過去服務還沒上到雲端時是透過一些工具,像之前黑暗大就寫過 ASP.NET CPU 飆高問題之傻瓜分析工具-DebugDiag Tools 找到應用程式 Crash 或是緩慢原因,今天要分享的是 Memory Dump 把應用程式當下的記憶體 clone 一份下來,再進行問題的盤查或是分析,另外在 Memory Dump 之前提醒事項如下
  • While collecting the memory dump, a clone of your app's process is created so the impact on the site availability is negligible.
  • Dumps are collected for the worker process (w3wp.exe) and child processes of the worker process.
  • Size of the memory dump is directly proportional to the process size, so processes consuming more memory will take longer to be dumped.
  • Your App will not be restarted as a result of collecting the memory dump.
白話來說,Memory Dump 會 Clone 當下應用程式 (w3wp.exe) Process 的資訊,花費時間多寡取決於 Process 用量多寡決定,應用程式不會被重啟。了解以上資訊後,就來看看如何在 Azure 設定 Memory Dump
Step 1 : 開啟 App Service
Step 2 : 點選左邊清單的 Diagnose and solve problems 功能
Step 3 : 在右邊框輸入 "點選 Memory Dump"
Step 4 : 選擇 Dump 下來的檔案放置的位置,如果之前沒執行過需要設定 Dump file 要存放的位置
Step 5 : 接著下一步,Mode 部分是選擇要蒐集 Dump Data 或者是除了 Dump 之外還希望進行 Memory 的分析,如果 Server 是多台機器的話,下面會列出目前的機器有哪些提供使用者選擇所要蒐集的 Instance
另外,如果之前有執行過蒐集過 Dump 的動作,下方也會列出之前手動或是自動蒐集的 Dump 檔案清單
Step 6 : 按下 Collect MemoryDump 按鈕之後,會開始蒐集應用程式的 Memory 資訊 (需等待一段時間,時間長短跟你應用程式 Memory 成正比)
Step 7 : 完成後可以看到 dump file 存放到指定的 storate account 位置,如果有勾選 Analyze Data 則會產生分機報告。
Step 10 : 點選 Report 可以看到分析 memory 的結果,打完收工 !
另外,如果是在線上環境發生緊急問題時,蒐集應用程式的 Memory dump 可以有助於我們找到問題,但其 dump 處理時間是很漫長會花費比較長的時間,勢必也會影響到處理線上問題的時間,與微軟技術支援討論建議如果遇到這狀況,可以透過 Metric Apply Splitting 找到特定的 instance,接著在 dump 時選擇該 instance 加速其 collect dump file 的時間 (又多學到一招,Azure 初學者覺得開心)。

結論
以上是簡單介紹 Azure Memory Dump 的方式,另外在微軟官方 youtube 也有影片說明如何在 App service 進行 debugging memory 的說明,有需要的朋友可以自己觀看,Hope it helps :D

Related Posts:

  • [Azure] App Service Diagnostics - Auto-Heal 前言 上一篇提到了如何在 Azure 取得當下的 memory dump 資訊 App Service Diagnostics - 應用服務診斷,這一篇則是透過另外一種方式使用 Auto-heal 的方式設定 memory 達到一定的水位時,觸發自動收集 memory 的使用狀況,並在自訂的條件下抓取 memory 資料,並指定 dump file 放置在某個 storage account 帳號中。若對於上述內容有問題或是不清楚的地方,… Read More
  • [AzureDevops] 初探 Wiki 文件管理前言 隨著團隊成員越來越多,在人員越來越多發現有些基本知識像是 Code Review 規範或是新人報到流程沒有系統化整理起來,因此需要一個知識管理平台存放相關 Domain 與流程相關文件,於是開始 suvery 知識管理平台發現在 Azure Devops Wiki 符合好管理、版控紀錄、可以使用 markdown 方式撰寫十分方便,可以做為團隊上 KM (knowledge management) 文件中心,這篇文章就來簡單介紹小小的使… Read More
  • [Azure] 打包 ASP.NET Core 應用程式到 Docker Hub 並發佈到 Azure前言 這幾年隨著容器化技術逐漸成熟,在技術研討會與社群上可以聽到越來越多公司架構朝容器與微服務邁進,微軟也很佛心的提供 .NET 微服務 : 容器化應用程式架構指南 電子書,作為有興趣往微服務的.NET 開發人員參考。除了提供電子書之外在 Azure 提供 Web App for Container 服務,可以輕鬆的將封裝好的 Docker image 檔案部署到 Azure 上,這篇文章是參考 Microsoft Azure 官網影片的筆記,介… Read More
  • [Azure] App Service Diagnostics - 應用服務診斷 前言 目前工作主要服務都是放在 Azure 服務上,因此接觸到 Azure 時間也越來越多,當應用程式發生問題時要如何進行診斷找到 Root cause 呢 ? 過去在地端機房上可能可以先取得執行當下的 Memory Dump 檔案,再把抓下來的 dump file 透過一些記憶體分析工具像是 DebugDiag Tools 或是 WinDBG 來分析原因,那如果今天我們使用的是雲端 Azure 的 Paas 服務該如何處理呢 ? 今天就… Read More
  • [Azure] App Service Diagnostics - Collect Memory Dump 前言 前兩篇分別介紹了 App Service Diagnostics 中的 Collect .Net Profiler Trace 與 Auto heal,分別都可以透過工具來蒐集雲端伺服器的緩慢問題分析與蒐集記憶體資訊,這一篇則是介紹如何 dump 目前伺服器 memory 的資料,以及有多個伺服器的時候該如何抓取特定的 Server memory data。若對於上述內容有問題或是不清楚的地方,歡迎提出來一起討論。 Colle… Read More

0 意見:

張貼留言

Copyright © 2025 m@rcus 學習筆記 | Powered by Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com