首页 > 解决方案 > Connection Timeout Expired 当同时有很多请求时

问题描述

我有一个访问 SQL Server 数据库的 .Net 应用程序(REST API)。有时当同时有许多 API 请求时,我会收到连接超时异常,因此所有请求都失败了。情况并非总是如此,仅当有许多请求同时访问服务器时才会发生。

异常详情:

System.Data.SqlClient.SqlException (0x80131904):连接超时已过期。尝试使用登录前握手确认时超时时间已过。这可能是因为登录前握手失败或服务器无法及时响应。尝试连接到此服务器所花费的持续时间是 - [Pre-Login] 初始化 = 4;握手=14992;---> System.ComponentModel.Win32Exception (0x80004005):等待操作超时。

这里的任何帮助将不胜感激。

标签: asp.net.netsql-serverasp.net-mvcasp.net-apicontroller

解决方案


从这个(upvoted)评论

在这种情况下可能有几个原因:
1. 您正在使用 SQL Server Express
2. 查询之间的死锁
3. 执行的查询超过标准超时 - 30 秒

您应该首先排除 N1,因为服务器版与连接超时无关client

然后排除 N2,因为死锁由服务器死锁监视器自动解决,该监视器每 5 秒控制一次死锁,或者在死锁频繁时甚至更少。

比排除 N3connection timeout无关execution timeout。你的超时是CONNECTION超时。

您应该增加connection timeout您的客户端或对您的服务器进行故障排除,在那里您的服务器变得无响应会发生什么。


推荐阅读