2012-03-04 36 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