IIS上的请求超时数很高

问题描述:

我有一个相当繁忙的站点,每个月可以看到10米左右的视图。IIS上的请求超时数很高

我的一个应用程序池似乎堵塞了几个小时,我正在寻找一些关于如何解决它的想法..?我怀疑它以某种方式跑出线程,但我不知道如何确定这个追溯.. ..?以下是我所知道的:

  • 该网站从未“失望”,但约90%的请求开始超时。
  • 我可以看到大量的“HttpException - 请求超时”。在停机期间的日志中
  • 我无法找到任何会导致超时的SQL错误或代码错误。
  • 超时似乎已在所有页面上的网站范围内。
  • 有一个页面上有一个错误,它会在该特定页面上导致错误。
  • 该网站必须重新启动。

该网站是ASP.NET C#3.5的WebForms ..

可能性:

  1. 主题枯竭:我的想法是,导致错误的页面可能以某种方式开始干扰可用的线程?
  2. 全局代码错误:另一种可能性是我的一个静态类在某个地方有一个未发现的错误。这是不太可能的,因为这从来没有发生过,我无法找到这些类的任何日志错误,但这是一种可能性。

UPDATE

我已经成功,现在跟踪的问题,而它的发生。页面正常加载,但由于某种原因WebResource.axdScriptResource.axd均为需要一分钟加载。在性能计数器中,我可以看到此时ASP.NET Requests Queued峰值。

+2

btw;没有C#3.5这样的东西;我认为你的意思是C#3.0的目标.NET 3.5 – 2011-04-26 09:21:16

+0

正确,3.5 build .. – 2011-04-26 09:33:01

+0

你使用线程/锁/互斥锁和多个工作池吗?搜索互斥锁。 – Aristos 2011-04-26 09:36:06

我想尝试的第一件事是Sam Saffron的CPU analyzer tool,它应该表明是否有某些常见事情发生太多/太长。部分原因是因为它不涉及任何变化;只需在服务器上运行它。

之后,还有其他各种调试工具可用;我们发现some very ghetto approaches可以非常有效地查看时间花费在哪里(当然,它只能在成功结果的10%上运行)。

你当然可以打开服务器分析工具并拖动各种.NET/IIS计数器,其中可能帮助你找到一些东西。

这三个选项之间,你应该涵盖的:

  • 代码掉入一个黑洞,从来没有走出来(通常线程相关)
  • 代码运行,但过于缓慢(通常数据访问相关)
+0

谢谢马克,欣赏信息。现在我已经加载了一些性能计数器,但正如你猜测的那样,现在所有的计数器看起来都很正常。如果它再次发生,将保持它们加载..此外,忘了提及,CPU在停机期间掉到了什么地方.. – 2011-04-26 09:47:52

+0

@Dave如果CPU什么都不是,那*可能*是大规模阻塞的(线程相关的错误),或者可能是数据访问问题;都不涉及CPU – 2011-04-26 09:49:16

+0

谢谢马克,是的低CPU确实使它看起来这样。我想我可以排除数据访问方面的问题。我多年来遇到过很多这样的人,并且知道如何很好地发现他们。也不能拿起日志中的任何SQL超时,并且没有SQL的静态页面也会超时。所以我认为线程阻塞看起来像这里的罪魁祸首.. – 2011-04-26 10:01:10