2012-03-04 26 views
3

所以我的服務器已經準備有點瘋狂近來,每一個現在,然後我的IIS線程會吃掉我100%的CPU和掛機,直到我重新啓動。IIS線程100%,進行轉儲,但不知道如何着手

我已經做了轉儲,發現罪魁禍首ASPX頁面,但是,我不知道如何從那裏進一步弄清楚發生了什麼事情。

很顯然,我已經做了一些非常錯誤的 - 所以是有可能看到的代碼是IIS的時候開始吃了我的CPU運行的線程?

謝謝你,羅恩

回答

0

這通常是當你犯了一個閉環 - 有點像。

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?

IIS crashes and restarts without dropping a mini-dump

+0

我知道這是起因於某種僵局,我的網站比片段更復雜一點。我需要找到我的代碼在機器上的位置。如果可能的話 – Ron 2012-03-04 20:47:36

+0

@Ron祝你好運,很難找到它... – Aristos 2012-03-04 22:16:50

0

最近,我在同樣的情況:我想測量我的現場製作服務器上正在發生的事情。

已經提出的問題也是在紅門的蟻探查論壇上,我得到了一個great reply from the developers

基本上向我指出的螞蟻探查的版本7的早期使用計劃(EAP)的版本。這一個有一個功能,他們稱之爲「連續分析」,它基本上做了一個IIS工作進程的實時跟蹤。

1

爲了看線程正在執行什麼樣的代碼,你需要匹配所運行的代碼符號(.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