我为我们公司创建了一个内部网站。它平稳地运行了几个月,然后由于用户建议,我进行了重大更新。当我在实际应用中运行时,它正常工作。然后突然间,来自日本的一个用户给我发了一个“等待操作超时”的错误。当我检查访问那个特定链接时,对于我和一些我要求检查是否访问了该页面的其他人来说,它正常工作。我已经更新了httpRuntime executionTimeout,但仍然没有运气。这是数据库连接引起的错误吗?如果我增加数据库连接的超时时间,它会修复问题吗?
我为我们公司创建了一个内部网站。它平稳地运行了几个月,然后由于用户建议,我进行了重大更新。当我在实际应用中运行时,它正常工作。然后突然间,来自日本的一个用户给我发了一个“等待操作超时”的错误。当我检查访问那个特定链接时,对于我和一些我要求检查是否访问了该页面的其他人来说,它正常工作。我已经更新了httpRuntime executionTimeout,但仍然没有运气。这是数据库连接引起的错误吗?如果我增加数据库连接的超时时间,它会修复问题吗?
请记得同时增加连接超时时间和命令超时时间:
SqlConnection(@"Data Source=SQLSERVER;Initial Catalog=MYCATALOG;Integrated Security=True;Connection Timeout=1000");//huge timeout
接着:
com.CommandTimeout = 950;//or whatever
我通过在事件查看器中找到超时发生的确切过程来解决了这个错误。
在SSMS中连接到相同的数据库并运行:
exec sp_recompile 'Procedure name'
这也可能是另一个问题。例如,如果您在打开一个连接期间运行了大量查询,并且超过了连接生命周期,则需要在连接字符串中设置 Connection Lifetime
属性。以下是说明:
当连接返回到池中时,它的创建时间与当前时间进行比较,如果该时间跨度(以秒为单位)超过Connection Lifetime指定的值,则销毁该连接。在集群配置中,这很有用,可以强制在正在运行的服务器和刚刚上线的服务器之间进行负载平衡。值为零(0)会导致池化连接具有最大的连接超时。