asp.net - Connection Timeout Expired 当同时有很多请求时
问题描述
我有一个访问 SQL Server 数据库的 .Net 应用程序(REST API)。有时当同时有许多 API 请求时,我会收到连接超时异常,因此所有请求都失败了。情况并非总是如此,仅当有许多请求同时访问服务器时才会发生。
异常详情:
System.Data.SqlClient.SqlException (0x80131904):连接超时已过期。尝试使用登录前握手确认时超时时间已过。这可能是因为登录前握手失败或服务器无法及时响应。尝试连接到此服务器所花费的持续时间是 - [Pre-Login] 初始化 = 4;握手=14992;---> System.ComponentModel.Win32Exception (0x80004005):等待操作超时。
这里的任何帮助将不胜感激。
解决方案
从这个(upvoted)评论
在这种情况下可能有几个原因:
1. 您正在使用 SQL Server Express
2. 查询之间的死锁
3. 执行的查询超过标准超时 - 30 秒
您应该首先排除 N1,因为服务器版与连接超时无关client
然后排除 N2,因为死锁由服务器死锁监视器自动解决,该监视器每 5 秒控制一次死锁,或者在死锁频繁时甚至更少。
比排除 N3connection timeout
无关execution timeout
。你的超时是CONNECTION
超时。
您应该增加connection timeout
您的客户端或对您的服务器进行故障排除,在那里您的服务器变得无响应会发生什么。
推荐阅读
- shell - 在 docker 内运行脚本 shell 不起作用?
- android - 如何解决没有这样的属性:类的 Gradle 版本:jetGradleplugin?
- php - 使用 PHP 和 mySQL 创建出勤表结果
- javascript - 微前端/Web 组件/Vue 路由器错误:未捕获类型错误:无法重新定义属性:$router
- javascript - 对状态变化做出反应动画
- asp.net-core - 如何知道 JsonSerializer.Deserialize 返回的 JSON 类型?
- javascript - 结束函数后停止运行 ElementbyID onClick
- python - 将对象(字符串)转换为 Int32 时出错:TypeError:对象无法转换为 IntegerDtype
- python - 如何使用不同类型的参数列表调用python子进程
- .htaccess - 通过部分修改中间的链接重定向.htaccess