【问题标题】:SQL Server timeout caused by w3wp.exe crashingw3wp.exe 崩溃导致 SQL Server 超时
【发布时间】:2011-04-23 21:30:18
【问题描述】:

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

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

非常感谢任何帮助

真吉利

【问题讨论】:

  • 您的 SQL 实例是否在同一台机器上?您是否检查过 SQL 块 - 您是否收到来自 sql 实例的通知?
  • 你能粘贴更多关于你的 sql 缓存依赖的细节吗?
  • 还有多少用户通过投入获得?每秒有多少查询访问数据库?
  • 超时时间是否每晚同时发生?它们是在sql server 还是iss server 上运行的备份服务或杀毒软件?
  • 您找到解决问题的方法了吗?

标签: asp.net timeout deadlock w3wp.exe


【解决方案1】:

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

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

如果是sqlserver占用CPU,那么尝试使用following Microsoft article来分析问题。

【讨论】: