w3wp.exe崩溃导致SQL Server超时

时间:2010-10-11 15:51:07

标签: asp.net timeout deadlock w3wp.exe

我的网站一直存在问题,看起来W3wp.exe崩溃,反过来尝试连接到网站的任何人都会收到SQL服务器超时错误。

错误就是这个......

System.Data.SqlClient.SqlException:超时已过期。操作完成之前经过的超时时间或服务器没有响应。

实际发生的情况是,发生这种情况时,服务器上的CPU使用率最高可达100%并保持不变。在此期间,如果我尝试连接到主页,该网站将显示正在加载,然后超时。当我尝试通过管理工作室连接到数据库时也是如此。 当我通过电子邮件向我发送异常时,我从ELMAH收到上述SQL超时错误。当我执行iisreset时,我可以再次连接到SQL服务器,CPU使用率会立即下降。

现在我已经在这里发布了一些关于SQL超时异常问题的问题。如此糟糕的列出我所做的和我正在使用的......

•我使用Linq to SQL。 •SQLCacheDependancy。 •IIS 7.5& SQL Server 2008 R2。 •处置所有物体。 •对Linq to SQL dataContext的调用始终包含在USING关键字中。

这些超时错误很少发生,可能每2天发生一次,但是今天当我起床时,我的收件箱中充满了超时的例外情况,表明一个发生在一夜之间。

另一个奇怪的事情是,例如它发生在昨晚,它是凌晨4点左右,当我今天早上8点尝试它时网站工作正常,所以我看来加班W3wp.exe,SQL服务器或两者都管理回收或重置自己。

任何人都可以看到可能导致此行为的原因吗?或者指出我可能是什么原因的正确方向?或者甚至是一种可能的解决方案?

非常感谢任何帮助

Truegilly

1 个答案:

答案 0 :(得分:0)

我猜测超时是因为CPU的高峰值,而不是相反。如果您的IIS和SQL在同一台机器上,请尝试找出正在占用处理器的进程(来自任务管理器)。

如果是Web服务器,则设置执行计数器,尤其是与.NET垃圾收集相关的计数器,并查看它执行的频率。还要检查Gen2对象大小。您必须从运行正常直到CPU最大值开始收集此数据,并比较计数器中“增长”的数据。检查您是否在数据上下文中启用了对象跟踪,以及您使用(datacontext){...}的时间。

如果是持有CPU的sqlserver,请尝试使用following Microsoft article来分析问题。