【发布时间】:2012-02-06 10:49:39
【问题描述】:
遇到了一个问题,我希望有人可以帮助给我一些指导。 在 .NET 3.5 和 NHibernate 1.2 上开发一个使用了几年的应用程序。 过去一周一直遇到问题,交易似乎随机锁定。我注意到 NH 的 command_timeout 为 100000。我现在将其降低到 30,因为 100000 看起来很疯狂!问题仍在发生。
当问题发生时,SQL Server 活动监视器会显示一个阻塞事务,通常处于 SUSPENDED 状态。如果我杀死阻塞进程,那些被阻塞的进程就会关闭并且系统很好。
对阻塞进程运行检查,我可以看到正在执行的大约导致问题的 SQL 语句,但它是通过系统的大部分执行的语句,检索大多数页面的公共数据。
我认为这可能是什么原因造成的?没有什么明显的……我们确实发布了一些小改动,但它们都不应该有这种效果。最近也安装了 Windows 更新/服务包。 SQL/.NET SP 更新是否会导致此问题?
我知道这里有很多东西,但我现在尽力付出。
新信息: 现在 command_tinmeout 已更新为 30 秒,超过此执行时间的查询将自动终止 - 或者我在 Activity Monitor 中看到。但是,似乎发生了其他事情,因为重复查询也因超时而失败。但是,如果我停止并启动应用程序池,一切都会开始正常工作,至少在一段时间内。
【问题讨论】:
标签: .net sql-server-2005 nhibernate process locking