连接超时到期同时存在多个请求时

时间:2019-01-31 08:09:23

标签: asp.net .net sql-server asp.net-mvc asp.net-apicontroller

我有一个.Net应用程序(REST API),用于访问SQL Server数据库。有时当同时有多个API请求时,由于所有请求均失败,我会收到“连接超时”异常。并非总是这种情况,只有在同时有许多请求同时到达服务器时才会发生。

异常详细信息:

  

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

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

1 个答案:

答案 0 :(得分:0)

此评论(已评论)

  

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

首先应排除N1,因为服务器版与client造成的连接超时无关。

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

与排除N3相比,connection timeoutexecution timeout无关。而您的超时时间是CONNECTION超时。

您应增加客户端上的connection timeout或对服务器进行故障排除,这会导致服务器无响应。