2017-02-20 99 views
2

最近我開始面臨一些服務器的CPU開始消耗比平常趨勢更多的資源的問題。我正在試圖找出造成這種情況的根本原因,並從任務管理器中獲取了w3wp進程的轉儲(右鍵單擊進程並轉儲)。

現在dmp文件大小爲14GB,我試圖去分析它通過WinDBG的,但該工具不能正常工作並獲得消息:
Error Screen Shot轉儲文件分析

我也參加了一些小型轉儲,但他們中的一些開放罰款,而少數是這與32bit或64bit之間的混淆無關(收集的轉儲爲64bit)。 我想知道是什麼導致了這個問題。是文件大小還是我沒有正確地轉儲?
我檢查了link但它沒有幫助。

+0

*「它是文件大小」* - 可能不是。所有受支持的Windows版本都允許讀取大於4 GB的文件。 *「我沒有正確地轉儲」* - 我們不知道,您是如何生成轉儲文件的,所以我們無法知道。 – IInspectable

+0

這是一個32位應用程序,如果需要使用32位任務管理器進行轉儲,請參閱:https://blogs.msdn.microsoft.com/amb/2011/05/12/do-not -collect-32bit-process-dumps-with-64bit-task-manager/ – EdChum

+0

這是64位應用程序。並從任務管理器轉儲。並且爲了測試,我在我的測試環境中執行了相同的過程,並將800 MB的轉儲打開。 –

回答

7

Windbg不適合這份工作。轉儲只是快照,因此您不知道之前發生了什麼。使用ETW,這裏是CPU採樣,它彙總所有調用並詳細顯示CPU使用情況。

安裝Windows性能工具包,其是Windows 10 SDK的一部分(V1607 works上的Win8/8.1(Server2012/R2)和Win10或V1511 SDK如果您使用Windows 7/Server2008R2)),運行WPRUi.exe和選擇CPU Usage

enter image description here

並按下Start。捕獲1-2分鐘的高CPU使用率,然後點擊Save。​​,拖放到觀窗格

enter image description here

load the Debug Symbols和所述CPU Usage (Sampled)曲線圖。現在在圖表中選擇你的過程,放大和展開堆棧,在這裏你看到所有調用的CPU使用的權重

在本示例中,Internet Explorer中大多數CPU使用率來自HTML東西。

對於.NET應用程序WPA顯示你的.NET相關分組像GC或JIT:

enter image description here

展開w3wp進程的堆棧,以瞭解它在做什麼。從名字你應該知道發生了什麼。

+0

良好的反應。我只是想補充說,如果你有一個無限循環,有時你可以通過運行'!runaway'來獲得。不過,我並不反對你在這裏陳述的任何內容。 –

+0

謝謝@SteveJohnson,但我在這裏試圖打開一個dmp文件,而不是搞清楚另一種獲取服務器快照的方法。 –

+1

再次遇到XY問題(http://meta.stackexchange.com/a/66378)。使用我的技術來解決問題,而不是錯誤的工具windbg – magicandre1981