使用Visual Studio分析dump

  • 2021 年 8 月 30 日
  • 筆記

最近系統時不時CPU會飆升的百分之九十多甚至百分百,在本地又很難復現問題,無法定位問題出現在哪。

可以用轉儲文件來保存現場,然後通過分析dump文件可以大概分析出問題的所在

生成轉存文件

在CPU飆升時打開任務管理器,找到對應的進程(IIS Worker Process),右鍵然後點擊創建轉儲文件

 

 

 

使用Visual Studio打開dump文件

選擇要分析的.dmp文件,右鍵使用vs執行

 

 

 

 

 

 分析dump文件

可參考微軟官方文檔://docs.microsoft.com/zh-cn/visualstudio/debugger/how-to-debug-managed-memory-dump?view=vs-2022

點擊右側操作下的運行診斷分析,選擇要分析的選項然後點擊分析

 

 

 點擊分析結果可查看具體的分析,包括異常對象以及一些大型對象,可通過檢查其中的對象來排除程式碼是否有不當的使用

 

 

 

 由於我們遇到的問題是CPU佔用過高的問題,所以著重檢查CPU使用率摘要

 

 可以發現EndProductHandler這個類是使用CPU資源最多的,我們也可以打開並行堆棧來查看方法的調用

 

 

 

最後通過檢查分析EndProductHandler發現有個方法在循環生成某個表,然後沒有使用EF的批量新增,再通過阿里雲的監控台可以看到CPU飆升的那段時間用戶剛好在執行此操作。

至此,先將方法修改成批量新增的方法,等後續再觀察下還有沒有別的問題。