等待操作超时。ASP

28

我为我们公司创建了一个内部网站。它平稳地运行了几个月,然后由于用户建议,我进行了重大更新。当我在实际应用中运行时,它正常工作。然后突然间,来自日本的一个用户给我发了一个“等待操作超时”的错误。当我检查访问那个特定链接时,对于我和一些我要求检查是否访问了该页面的其他人来说,它正常工作。我已经更新了httpRuntime executionTimeout,但仍然没有运气。这是数据库连接引起的错误吗?如果我增加数据库连接的超时时间,它会修复问题吗?

6个回答

26

请记得同时增加连接超时时间和命令超时时间:

SqlConnection(@"Data Source=SQLSERVER;Initial Catalog=MYCATALOG;Integrated Security=True;Connection Timeout=1000");//huge timeout

接着:

com.CommandTimeout = 950;//or whatever

1
如果我在SqlConnection中增加连接超时时间,是否需要同时增加CommandTimeout? - Vic
1
不,它不会抛出错误消息,但是没有另一个,一个并没有什么用处。如果您的连接超时设置为30,则将命令超时增加到60或反之亦然是没有意义的。整个过程将在达到两个数字中较低的数字时取消和超时。 - Shannon Holsinger
13
至少在Sql Server中,连接超时是建立连接所需的时间。它与连接的生命周期无关。命令超时与命令执行所需的时间有关。 - Brian
1
@Shannon 如果连接超时,命令将不会被执行,而命令超时的值并不重要。如果命令被执行,显然连接超时是可以接受的;它与命令执行的时间无关。它们是独立的值。 - Suncat2000

20
如果您遇到了“等待操作超时”的确切错误,那么可能是由于数据库调用时间超过预期所致。这可能是由以下任何一种原因引起的:
  1. 短暂的网络问题
  2. SQL服务器负载高
  3. SAN、RAID或存储设备出现问题
  4. 死锁或其他形式的多进程争用
您没有分享足够的信息来进行故障排除。我处理此问题的方式是检查问题是否发生了其他情况,并查看是否存在模式,例如如果问题在某个特定时间发生。
当然,增加超时时间不是坏主意(如果当前设置得相当低),并且可能会自行解决问题。

8

我通过在事件查看器中找到超时发生的确切过程来解决了这个错误。

在SSMS中连接到相同的数据库并运行:

exec sp_recompile 'Procedure name'

它显示以下信息:
对象“过程名”已成功标记为重新编译。

0
在我的情况下,我通过从SQL Server配置管理器中打开命名管道来解决了这个问题。 enter image description here

0

这也可能是另一个问题。例如,如果您在打开一个连接期间运行了大量查询,并且超过了连接生命周期,则需要在连接字符串中设置 Connection Lifetime 属性。以下是说明:

当连接返回到池中时,它的创建时间与当前时间进行比较,如果该时间跨度(以秒为单位)超过Connection Lifetime指定的值,则销毁该连接。在集群配置中,这很有用,可以强制在正在运行的服务器和刚刚上线的服务器之间进行负载平衡。值为零(0)会导致池化连接具有最大的连接超时。


-2
在 web.config 文件中,转到连接字符串并添加以下内容: ;Integrated Security=True;Connect Timeout=120"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接