2

我的网站一直存在问题,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 服务器或两者都设法回收或重置自己。

谁能看到可能导致这种行为的原因?或者指出我可能是什么原因的正确方向?甚至可能的解决方案?

非常感谢任何帮助

特鲁吉利

4

1 回答 1

0

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

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

如果是 sqlserver 占用 CPU,那么尝试使用下面的微软文章来分析问题。

于 2012-04-07T05:58:17.823 回答