使用Visual Studio分析dump

Hcj發表於2021-08-30

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

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

生成轉存檔案

在CPU飆升時開啟工作管理員,找到對應的程式(IIS Worker Process),右鍵然後點選建立轉儲檔案

 

 

 

使用Visual Studio開啟dump檔案

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

 

 

 

 

 

 分析dump檔案

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

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

 

 

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

 

 

 

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

 

 可以發現EndProductHandler這個類是使用CPU資源最多的,我們也可以開啟並行堆疊來檢視方法的呼叫

 

 

 

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

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

 

相關文章