如何解决 Web 请求超时、连接池错误、数据锁定等问题

如何解决 Web 请求超时、连接池错误、数据锁定等问题

我有一个问题,希望有人能帮我。我正在运行一个 .NET Web 应用程序,并且收到错误在某些情况下。错误是“System.Data.SqlClient.SqlException:超时已过期。”虽然这是由连接到数据库的 C#.NET 代码生成的,但我不认为问题与代码有关,这就是为什么我在这里而不是 StackOverflow.com 发布问题。

此超时仅发生在应用程序的部分用户身上,而不是全部。而且,我花了很多钱尝试分析 SQL,但没有发现任何性能问题。对我来说,有问题的 SQL 只需几秒钟即可运行,而上述错误在等待几分钟后才会出现。问题是,这个似乎仅在访问网站时发生,而不是在“幕后”运行相同代码时发生。这让我相信该问题与事务阻塞有某种联系,而我对此了解甚少。

所以我的问题是针对那些了解事务逻辑、连接池错误和/或 Web 数据请求与在 DBMS(SQL Server)中运行的查询的不同方式的人。我对这类事情真的一无所知,所以完全不知所措。我真的希望有人能给我一些建议或给我指明正确的方向。

如果我把这个问题发布在了错误的地方,请告诉我。

预先感谢您的帮助。

答案1

为了隔离问题,您已经通过在 SQL 环境上运行应用程序后面的 sql 命令来做到这一点。无论如何,超时可能来自 2 个位置。首先是应用程序连接字符串中指定的超时,其次是 SQL 引擎的属性(在 SSMS - 属性 - 连接窗口中右键单击 SQL 服务器)

默认情况下,SQL 中设置的超时时间为 600 秒,这足以完成 Web 查询。然而,如果应用程序超时设置的值较低且高于客户端的等待时间,则会抛出超时错误。

查询由于多种原因而超时。您可以在这里搜索可能的原因。如果这种情况是随机发生的,那么您不必担心端口或防火墙设置或服务器名称拼写是否正确。但您应该检查客户端启用的协议是否与服务器上启用的协议之一相匹配(TCP/IP 是最常见的,应该启用)。

相关内容