所以我的服務器已經準備有點瘋狂近來,每一個現在,然後我的IIS線程會吃掉我100%的CPU和掛機,直到我重新啓動。IIS線程100%,進行轉儲,但不知道如何着手
我已經做了轉儲,發現罪魁禍首ASPX頁面,但是,我不知道如何從那裏進一步弄清楚發生了什麼事情。
很顯然,我已經做了一些非常錯誤的 - 所以是有可能看到的代碼是IIS的時候開始吃了我的CPU運行的線程?
謝謝你,羅恩
所以我的服務器已經準備有點瘋狂近來,每一個現在,然後我的IIS線程會吃掉我100%的CPU和掛機,直到我重新啓動。IIS線程100%,進行轉儲,但不知道如何着手
我已經做了轉儲,發現罪魁禍首ASPX頁面,但是,我不知道如何從那裏進一步弄清楚發生了什麼事情。
很顯然,我已經做了一些非常錯誤的 - 所以是有可能看到的代碼是IIS的時候開始吃了我的CPU運行的線程?
謝謝你,羅恩
這通常是當你犯了一個閉環 - 有點像。
function int ThisOne(int SomeVar)
{
return SomeVar+1;
}
function int ThisOne(int ? SomeVar)
{
// here you try to call the ThisOne(int SomeVar),
// but you call him self and crash
return SomeVar == null ? 0 : ThisOne(SomeVar);
}
,使這個錯誤也使閉環和崩潰
public string sMyText
{
get {return sMyText;}
set {sMyText = value;}
}
類似問題的其他方式: How do I crash the App Pool?
最近,我在同樣的情況:我想測量我的現場製作服務器上正在發生的事情。
已經提出的問題也是在紅門的蟻探查論壇上,我得到了一個great reply from the developers:
基本上向我指出的螞蟻探查的版本7的早期使用計劃(EAP)的版本。這一個有一個功能,他們稱之爲「連續分析」,它基本上做了一個IIS工作進程的實時跟蹤。
爲了看線程正在執行什麼樣的代碼,你需要匹配所運行的代碼符號(.pdb文件)。您還需要爲.NET Framework/Windows dll設置符號。這KB介紹如何做到這一點:http://support.microsoft.com/kb/311503
WinDbg工具和SOS.dll調試擴展讓你找到具有最高CPU !runaway
線程,然後你就可以檢查堆棧!clrstack
。苔絲已經展示瞭如何用它來跟蹤高CPU線程在這裏一個偉大的演示:http://blogs.msdn.com/b/tess/archive/2008/02/22/net-debugging-demos-lab-4-high-cpu-hang.aspx
我知道這是起因於某種僵局,我的網站比片段更復雜一點。我需要找到我的代碼在機器上的位置。如果可能的話 – Ron 2012-03-04 20:47:36
@Ron祝你好運,很難找到它... – Aristos 2012-03-04 22:16:50