让ASP.net Web应用程序从SQL Server 2005数据库查询数据。有一个页面偶尔会超时。
跟踪代码并找到SQL。通过查询工具运行SQL,它总是在2秒内运行。 sql server的默认超时是10分钟。
解决此问题的方法是将sql server的时间更改为20分钟,然后再更改为10分钟。然后页面通常需要2秒才能查询并显示。
已经看过可能的锁定,但没有任何显示会导致问题。关于唯一的结论是重置超时设置正在杀死一个进程。
寻找可以追溯的一些想法。
由于
答案 0 :(得分:1)
这里有2种不同的超时时间。连接超时(在连接字符串中指定并作为SqlConnection的属性)和查询超时(属性SqlCommand.CommandTimeout)。默认值为:
查询超时定义为“在命令执行或处理结果期间所有网络读取的累计超时。在返回第一行后仍可能发生超时,并且不包括用户处理时间,只有网络阅读时间。“
网络读取时间消耗的大量原因(包括网络争用)。我会寻找的东西:
如果通过连接字符串指定了连接超时,则不使用现有的池化SQL Server连接:由于连接池缓存基于所使用的连接字符串,因此会获得新连接。你是否正确处理你的连接/命令/等等?如果您将打开的阅读器留下要读取的数据,则可能会出现导致问题的锁定。有时,SQL Server会窒息,丢弃连接并留下幽灵spid,这也会造成类似的锁争用问题。