ASP.NET CPU 飆高問題之傻瓜分析工具-DebugDiag Tools

昨天使用 WinDbg 追查 ASP.NET CPU 100% 原因的文章得到不少朋友的回饋,其中 Robert Hu 留言提到一個更方便的 Dump 擷取與問題分析工具,試用之下果然犀利,在此補上介紹。

Debug Diagnostic Tool (DebugDiag) 是微軟針對程式當掉(Crash)、當住(Hang),以及記憶體洩漏(Memory Leak)等問題設計的快速偵察工具,目前最新版為 Debug Diagnostic Tool v2 Update 2,共有三項兵器:

  1. DebugDiag 2 Collection

    自動化蒐集 Dump 檔的工具,可針對不同情境指定抓取 Dump 時機,例如:程式拋出非預期的例外、效能計數器達到門檻、HTTP 回應時間過慢、監測記憶體用量改變… 等,功能強大。


    DebugDiag Collection 最強悍之處在於設定規則守株待兔,當程序 CPU 使用量或其他效能指標超過門檻時匯出 Dump 檔(注意:匯出 Dump 期間程序會暫停,將影響線上使用者),對付「ASP.NET 不定期 CPU 飆高」之類的問題格外有用!
    下圖範例即為主機 CPU 使用百分比超過 30% 連續五秒時產生一到多個 AppPool Process 的 Dump 檔,有助於抓出耗用 CPU 的網站程式。
  2. DebugDiag2 RuleBuilder

    若 DebugDiag 2 Collection 預設抓取規則不夠用,Rule Builder 支援以視覺化流程圖方式自訂規則。
  3. DebugDiag 2 Analysis

    自動 Dump 分析工具,針對當機、當住及記憶體洩漏等情境預先寫好分析邏輯,輸入一個或多個 Dump 檔後自動產生分析報表。上回說到的 ASP.NET CPU 100% 問題,使用 PerfAnalysis 可以瞬間找到答案。

操作方法很簡單,如上圖所示,按下 Start Analysis,選好 Dump 檔,DebugDiag Analysis 就開始分析,稍待約一分鐘(運算時間長短視 Dump 大小、數量、分析項目而定)熱騰騰的分析報表網頁就出爐了。在報表尋找 Analysis Details /PerfAnalysis / Performance Summary / Statistical Rollups / Top 1 Operations By Duration,相當於用 WinDbg 尋找耗用 CPU 最久的 Thread 的分析資料,而共用元件呼叫 ODP.NET OracleCommand.ExecuteReader 的 Callstack 資料就在眼前。

使用 DebugDiag Analysis,只需幾個 Click 就能得到與 WinDbg 一連串指令操作相當的結果。若 WinDbg 是傳統單眼,DebugDiag Analysis 就像傻瓜相機,管它什麼快門調多快光圈開多大,按下快門就有好照片,還附贈美肌效果,神奇無比。

至於這兩種工具的選擇,若目的在檢視問題 Thread 當下的 Callstack,要「快」請用 DebugDiag Analysis,要「帥」就用 WinDbg 吧!哈。

歡迎推文分享:
Published 21 February 2017 08:30 PM 由 Jeffrey
Views: 9,726



意見

# shengyan cheng said on 21 February, 2017 08:22 AM

還有一個新朋友IntelliTraceCollector 適用情況稍有不同.

# Jeffrey said on 22 February, 2017 04:36 AM

to shengyan, 感謝補充,順補一篇詳細介紹 dotblogs.com.tw/.../85859.aspx

# pokemon go apk said on 23 February, 2017 03:44 AM

It is a great article. You will surely like this also because it is a great stuff, yeah it’s give us lots of interest and pleasure. Their opportunities are so fantastic and working style so speedy. Thank you for sharing the nice article.

# Patrick said on 07 September, 2017 04:57 AM

請問黑大,有沒有Web Request 跟Performace上的測試範例或是經驗,今天試圖使用此工具測試,但設定玩rule後,並沒有預期產出DMP檔案,不確定哪裡設錯,再請教有無建議的方向,感謝。

# Jeffrey said on 07 September, 2017 06:24 AM

to Patrick, 我有測過抓特定W3WP Process CPU百分比,再配合ASPX故意跑無窮迴圈觸發產生Dump,測試是成功的,你也可以試試這個做法。

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<February 2017>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
2627281234
567891011
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication