我管理一个包含多个在线交易的ASP.NET MVC 3网站。在网站中,客户可以下订单,支付账单,而供应商可以向客户收费。所有这些都可以同时发生,所以我有信号量来确保线程安全。
我注意到的是,大约每周一次,网站停顿十分钟。我的第一个尝试是信号量中的死锁,但在设置信号量日志并分析结果后,似乎没有死锁。此外,该网站在十分钟后自行回归。
在调查时,我注意到整个网站变得反应迟钝,而不仅仅是使用信号量的部分。他们都使用数据库很难。这就是为什么我的主要嫌疑人是数据库。
更奇怪的是,每次网站都会冻结十分钟到几秒钟。 SQL Server可以进行计划维护或任何可以解释此延迟的事情吗?如果没有,你知道是什么原因造成的吗?
答案 0 :(得分:1)
你的问题的答案似乎是“是”。在锁定事物的环境中正在发生一些事情。
您是否运行sp_who2以查看停止时正在运行的内容?
如果这样不方便,那么设置一个作业,每隔五分钟将sp_who2输出转储到一个表中。当它停止时,你可以看到正在运行和工作的东西。
我遇到了类似的问题,主数据库似乎被锁定了。因此,重命名数据库不起作用。幸运的是,这不是一个真实的交易environemnt,所以等待五分钟再试一次就可以了。
答案 1 :(得分:1)
ASP.NET挂起可能由于各种原因而发生。通常,当您遇到SQL挂起问题时,会出现连接或命令超时。
你好多了
adplus -hang -pn processname.exe
)或DebugDiag并设置转储规则!threads
或!dumpheap -stat
检查线程和堆对象。 请注意调试生产问题非常困难,WinDbg不是一个友好的工具,但猜测和查看日志的情况更是如此。