High CPU Dump收集工具 - ProcDump使用方法


工具介紹

ProcDump是System Internal提供的一個專門用來監測程序CPU高使用率從而生成進程dump文件的工具。ProcDump可以根據系統的CPU使用率或者指定的性能計數器來針對特定進程生成一系列的dump文件,以便調試者對事故原因進行分析。

下載地址

http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx

使用方法

命令行

procdump [-64] [[-c CPU usage] [-u] [-s seconds]] [-n exceeds] [-e [1 [-b] [-f filter] [-g]]] [-h] [-l] [-m commit usage] [-ma | -mp] [-o] [-p counter threshold] [-r] [-t] [-d <callback DLL>] <[-w] <process name or PID> [dump file] | -i <dump file> |-x <dump file> <image file> [arguments]> [-? [ -e]]

實例

procdump -c 70 -s 5 -ma -n 3 w3wp

當系統CPU使用率持續5秒超過70%時,連續抓3個full dump。

Procdump outlook -p "\Processor(_Total)\% Processor Time" 80

當系統CPU使用率超過80%,抓取outlook進程的mini dump。

procdump -ma outlook -p "\Process(Outlook)\Handle Count" 10000

當outlook進程handle數超過10000時抓取full dump

procdump -ma 4572

直接生成進程號位4572的full dump。

運行效果

以下是通過一個測試頁面在w3wp進程中造成high cpu時運行ProcDump命令的效果。可以看到在系統CPU每次持續5秒達到70%后就會生成相應的dump文件。

 

注意

  • Procdump需要進程已經啟動,並且中途不能停止。比如需要抓取IIS Worker Process的High CPU Dump,由於IIS Worker Process默認會配置Idle Timeout = 20 min,即該進程在20分鍾內沒有任何請求的話就會自動結束,這種情況下ProcDump也會自動結束。需要重新運行命令。因此如果目標程序存在這樣的配置,需要暫時將該配置取消。
  • 有些系統管理員希望能夠運行該工具后退出用戶session,ProcDump是做不到的,如果有這種需求可以考慮使用debugdiag
  • 在調試High CPU問題的時候經常用到的一個命令是!runaway,但是有些時候!runway在ProcDump抓取的dump中提取不出來。解決的方法是將Debug Tools for Windows (windbg)安裝目錄下的dbghelp.dll拷貝到procdump目錄下,然后再運行命令抓取dump。
    0:000> !runaway ERROR: !runaway: extension exception 0x80004002.     
    "Unable to get thread times - dumps may not have time information"

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM