Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IIS上出现大量请求超时_C#_Asp.net_Iis - Fatal编程技术网

C# IIS上出现大量请求超时

C# IIS上出现大量请求超时,c#,asp.net,iis,C#,Asp.net,Iis,我有一个相当繁忙的网站,每月浏览量约为1000万次 我的一个应用程序池似乎堵塞了几个小时,我正在寻找一些解决问题的方法。。?我怀疑它不知何故耗尽了线程,但我不确定如何追溯确定这一点。。?以下是我所知道的: 该网站从未“宕机”,但大约90%的请求开始超时 我可以在中断期间的日志中看到大量“HttpException-请求超时” 我找不到任何可能导致超时的SQL错误或代码错误 所有页面上的超时似乎都是站点范围内的 有一个页面上有一个bug,可能会导致该特定页面出现错误 该站点必须重新启动 该网站

我有一个相当繁忙的网站,每月浏览量约为1000万次

我的一个应用程序池似乎堵塞了几个小时,我正在寻找一些解决问题的方法。。?我怀疑它不知何故耗尽了线程,但我不确定如何追溯确定这一点。。?以下是我所知道的:

  • 该网站从未“宕机”,但大约90%的请求开始超时
  • 我可以在中断期间的日志中看到大量“HttpException-请求超时”
  • 我找不到任何可能导致超时的SQL错误或代码错误
  • 所有页面上的超时似乎都是站点范围内的
  • 有一个页面上有一个bug,可能会导致该特定页面出现错误
  • 该站点必须重新启动
该网站是ASP.NET C#3.5 WebForms

可能性:

  • 线程耗尽:我的想法是,导致错误的页面可能以某种方式开始阻塞可用线程
  • 全局代码错误:另一种可能性是,我的一个静态类的某个地方有一个未发现的bug。这是不可能的,因为这以前从未发生过,我也找不到这些类的任何日志错误,但这是可能的
  • 更新


    我已经设法在问题发生时追踪到了它。页面正在正常加载,但由于某些原因,WebResource.axdScriptResource.axd都需要一分钟才能加载。在性能计数器中,我可以看到此时ASP.NET请求排队的峰值

    我要尝试的第一件事是Sam Saffron's,它应该能说明是否有一些常见的事情发生得太多/太久。部分原因是它不涉及任何变化;只需在服务器上运行它

    之后,还有其他各种调试工具可用;我们已经发现,这可以非常有效地看出时间花在了哪里(当然,它只对成功结果的10%起作用)

    当然,您只需打开服务器分析工具并拖入各种.NET/IIS计数器,这可能会帮助您发现一些问题

    在这三个选项中,您应包括:

    • 代码掉入黑洞后再也不会出现(通常与线程相关)
    • 代码正在运行,但速度太慢(通常与数据访问相关)

    顺便说一句;没有所谓的C#3.5;我想你是说C#3.0瞄准.NET3.5你使用线程/锁/互斥锁和多个工作池吗?搜索互斥锁。你好,亚里士多德,是的,这是我应该进一步调查的一个领域。我所有的中心线程锁都有一个25ms的旁路,例如Monitor.TryEnter(_mylock,25);但是我可能错过了一些东西…谢谢Marc,谢谢你提供的信息。我已经为此加载了一些性能计数器,但正如您所猜测的,所有计数器现在看起来都很正常。如果再次发生,将保持加载状态。。此外,忘了提及,CPU在停机期间降至零。@Dave如果CPU为零,则可能是大规模阻塞(线程相关错误),也可能是数据访问问题;两者都不涉及CPU,马克,是的,低CPU确实让它看起来像那样。我想我可以排除数据访问的可能性。这些年来我遇到过很多这样的人,我知道如何很好地发现他们。也无法在日志中检测到任何SQL超时,并且没有SQL的静态页面也会超时。因此,我认为线程阻塞看起来像是罪魁祸首。@Dave-线程阻塞往往很容易通过基于轮询的探查器发现,因为每次它询问线程正在做什么时,它都会被卡住等待。我现在已经找到了主要症状,出于某种原因,我的两个.axd文件需要一分钟才能加载。。