我有一个.Net应用程序(REST API),用于访问SQL Server数据库。有时当同时有多个API请求时,由于所有请求均失败,我会收到“连接超时”异常。并非总是这种情况,只有在同时有许多请求同时到达服务器时才会发生。
异常详细信息:
System.Data.SqlClient.SqlException(0x80131904):连接超时 已过期尝试消耗以下内容时超时时间已过 登录前握手确认。这可能是因为 登录前握手失败或服务器无法响应 时间。尝试连接到该服务器所花费的时间 是-[登录前]初始化= 4;握手= 14992; -> System.ComponentModel.Win32Exception(0x80004005):等待操作 超时。
这里的任何帮助将不胜感激。
答案 0 :(得分:0)
此评论(已评论)
在这种情况下可能有几个原因:
1.您正在使用SQL Server Express
2.查询之间的死锁
3.查询执行的时间超过标准超时-30秒
首先应排除N1,因为服务器版与client
造成的连接超时无关。
然后排除N2,因为死锁由服务器死锁监视器自动解决,该监视器在死锁频繁发生时每5秒或更短时间控制一次死锁。
与排除N3相比,connection timeout
与execution timeout
无关。而您的超时时间是CONNECTION
超时。
您应增加客户端上的connection timeout
或对服务器进行故障排除,这会导致服务器无响应。