【问题标题】:The wait operation timed out. ASP等待操作超时。 ASP
【发布时间】:2017-01-03 17:45:37
【问题描述】:

我为我们公司创建了一个内部网站。它顺利运行了几个月,然后由于用户的建议,我进行了重大更新。当我在现场运行时,它运行正常。然后突然我的一位日本用户向我发送了“等待操作超时”。错误。当我检查访问该特定链接时,它会为我和其他一些我要求检查他们是否访问该页面的人正常运行。我已经更新了 httpRuntime executionTimeout 但仍然没有运气。错误来自数据库连接吗?如果我增加数据库连接的超时时间,它会解决问题吗?

【问题讨论】:

    标签: sql asp.net connection


    【解决方案1】:

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

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

    然后:

    com.CommandTimeout = 950;//or whatever
    

    【讨论】:

    • 如果我在sqlconnection中增加连接超时是否必须也需要增加commandtimeout?
    • 不,它不会抛出错误消息,但如果没有另一个,它不会有太大的好处。如果您的连接超时设置为 30,则将命令超时增加到 60 是没有用的,反之亦然。当达到两个数字中的较小者时,整个 she-bang 将取消并超时。
    • 至少在Sql Server中,连接超时是建立连接需要多长时间。它与连接的生命周期没有任何关系。命令超时与命令执行所需的时间有关。
    • @Shannon 如果连接超时,则不会执行命令,并且命令超时的值无关紧要。如果命令执行,显然连接超时没问题;它与命令执行多长时间无关。它们是独立的价值观。
    【解决方案2】:

    如果您发现确切的错误“等待操作超时”,那么很可能您的数据库调用花费的时间比预期的要长。这可能是由于多种原因造成的:

    1. 瞬态网络问题
    2. 高 SQL 服务器负载
    3. SAN、RAID 或存储设备存在问题
    4. 死锁或其他形式的多进程争用

    您没有分享足够的信息来进行故障排除。我处理这个问题的方法是检查问题的其他情况并查看是否存在模式,例如如果问题发生在一天中的某个时间。

    当然,增加超时不是一个坏主意(如果它当前设置得非常低),并且可以解决问题本身。

    【讨论】:

      【解决方案3】:

      我通过在事件查看器中查找发生超时的确切过程来修复此错误。

      在 SSMS 中连接到同一个数据库并运行:

      exec sp_recompile 'Procedure name'
      

      它显示了以下消息:

      对象“过程名称”已成功标记为重新编译。

      【讨论】:

        【解决方案4】:

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

        当一个连接返回到池中时,它的创建时间是 与当前时间相比,如果 该时间跨度(以秒为单位)超过 Connection 指定的值 寿命。这在集群配置中用于强制加载 正在运行的服务器和刚刚上线的服务器之间的平衡。一种 零 (0) 值导致池连接具有最大值 连接超时。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 2015-02-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-08-23
            • 1970-01-01
            • 2013-04-28
            相关资源
            最近更新 更多