IIS线程100%,执行转储但不知道如何继续

时间:2012-03-04 19:07:19

标签: asp.net iis memory-leaks windows-server-2008-r2

所以我的服务器最近变得有点疯狂,我的IIS线程会不时耗尽我的CPU并挂起,直到我重新启动它。

我已经完成了转储并找到了罪魁祸首的ASPX页面,但是,我不知道如何从那里进一步了解发生了什么。

显然我做了一些非常错误的事情 - 所以当IIS开始吃掉我的CPU时,是否有可能看到代码中的哪些线程正在运行?

谢谢, 罗恩

3 个答案:

答案 0 :(得分:1)

为了查看线程正在执行的代码,您将需要与正在运行的代码匹配的符号(.pdb文件)。您还需要为.NET Framework / Windows dll设置符号。此KB介绍了如何执行此操作:http://support.microsoft.com/kb/311503

WinDbg工具和SOS.dll调试扩展允许您查找具有最高CPU !runaway的线程,然后您可以检查堆栈!clrstack。 Tess有一个很棒的演示,演示了如何使用它来跟踪高CPU线程:http://blogs.msdn.com/b/tess/archive/2008/02/22/net-debugging-demos-lab-4-high-cpu-hang.aspx

答案 1 :(得分: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

答案 2 :(得分:0)

最近,我遇到了同样的情况:我想测量我的实时制作服务器上发生了什么。

在Red Gate的ANTS Profiler论坛上也提出了问题,我得到了一个great reply from the developers

基本上,我指出了ANTS Profiler第7版的早期访问程序(EAP)版本。这个功能称为“连续分析”,它基本上是对IIS工作进程的实时跟踪。