SQL Server停顿了十分钟

时间:2012-06-01 15:29:26

标签: asp.net sql sql-server asp.net-mvc tsql

我管理一个包含多个在线交易的ASP.NET MVC 3网站。在网站中,客户可以下订单,支付账单,而供应商可以向客户收费。所有这些都可以同时发生,所以我有信号量来确保线程安全。

我注意到的是,大约每周一次,网站停顿十分钟。我的第一个尝试是信号量中的死锁,但在设置信号量日志并分析结果后,似乎没有死锁。此外,该网站在十分钟后自行回归。

在调查时,我注意到整个网站变得反应迟钝,而不仅仅是使用信号量的部分。他们都使用数据库很难。这就是为什么我的主要嫌疑人是数据库。

更奇怪的是,每次网站都会冻结十分钟到几秒钟。 SQL Server可以进行计划维护或任何可以解释此延迟的事情吗?如果没有,你知道是什么原因造成的吗?

2 个答案:

答案 0 :(得分:1)

你的问题的答案似乎是“是”。在锁定事物的环境中正在发生一些事情。

您是否运行sp_who2以查看停止时正在运行的内容?

如果这样不方便,那么设置一个作业,每隔五分钟将sp_who2输出转储到一个表中。当它停止时,你可以看到正在运行和工作的东西。

我遇到了类似的问题,主数据库似乎被锁定了。因此,重命名数据库不起作用。幸运的是,这不是一个真实的交易environemnt,所以等待五分钟再试一次就可以了。

答案 1 :(得分:1)

ASP.NET挂起可能由于各种原因而发生。通常,当您遇到SQL挂起问题时,会出现连接或命令超时。

你好多了

  • 抓住调试Tools for Windows
  • 使用AdPlus获取内存转储(adplus -hang -pn processname.exe)或DebugDiag并设置转储规则
  • 使用WinDbg(或VS 2010 for 4.0框架)(在设置符号缓存之后)并开始检查正在发生的事情 !threads!dumpheap -stat检查线程和堆对象。

请注意调试生产问题非常困难,WinDbg不是一个友好的工具,但猜测和查看日志的情况更是如此。