繁体   English   中英

ASP.NET NHibernate C#Timeout问题SQL Server

[英]ASP.NET NHibernate C# Timeout Issue SQL Server

我正在使用ASP.NET和NHibernate运行一个网站。 最近,该网站遇到了导致SQL Server超时问题的问题。 我发现这个问题与一个锁定数据库中的表的NHibernate Query有关。 该网站将在20分钟后恢复,或者如果我手动强制数据库上的所有连接结束。

基本上我一直试图找到导致这个问题的查询,但不幸的是,经过几个月的尝试使用NHibernate profiler查找查询,我没有成功。 问题很少发生,通常每周只发生1-2次,这使得更难以找出导致锁定表的查询的原因。 我有.net设置,当它们发生时向我发送错误日志,这有助于我避免在运行查询时网站被锁定,因为我能够强制所有SQL连接丢弃,然后恢复网站。

长话短说,我需要的是一个创可贴解决方案,这将暂时适用于网站,同时我继续尝试找到错误的查询。 我想要做的是将超时时间从20分钟更改为2到5分钟。 这样就限制了运行这个错误查询时网站停机的时间。 考虑到错误的查询每周只发生1-2次,我发现这将限制停机时间。

唯一的问题是我不知道这是否是SQL Server强加的东西,或者这是什么.net或NHibernate强加的东西。 基本上我所指的是在运行错误查询后最终删除连接的20分钟。 任何人都知道这20分钟是什么以及它可以在哪里设置? 我倾向于这可能是某种NHibernate超时,但我不知道如何设置它。

唯一的20分钟是网站运行的应用程序池上的idle-timeout设置。 因此,在不活动20分钟后,IIS将回收整个工作进程,一切都恢复正常。 因此,您可以将应用程序池上的此设置更改为2-5分钟。

现在,根据您的说法,您似乎没有正确处理事务,并且它会一直运行直到超时。 那么你需要做些什么来识别哪些代码通过调试器连接到IIS网站并查看线程以查看它们在哪里停留。

有点高级,但如果您继续操作,您将能够看到锁定数据库的内容。 如果您在IIS服务器上安装了visual studio,那么调试环境会更加熟悉。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM