使用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飆升的那段時間用戶剛好在執行此操作。
至此,先將方法修改成批量新增的方法,等後續再觀察下還有沒有別的問題。