超时已过期:连接池

超时已过期:连接池

这是我们收到的错误。我们将应用程序和数据库服务器从 32 位移至 x64。服务器上安装了 Framework 2.0 Service Pack 2。

超时已到期。在从池中获取连接之前已超过超时期限。这可能是因为所有池连接都在使用中并且已达到最大池大小。

答案1

此错误可能意味着您没有关闭 ADO.Net 连接。查看您的代码,确保您的所有 SqlConnection 对象都在 A​​SP.Net 代码中被明确正确处置。您可以使用 VB 或 C# 代码中的 using 块来执行此操作。当超出范围时,using 构造将自动关闭并处置您的连接...

// C# example
using (var conn = new SqlConnection(myConnectString))
{
    conn.Open();

    // your data access code here
}

... 或者 ...

' VB example
Using conn As var = New SqlConnection(myConnectString)

    conn.Open()

    ' your data access code here

End Using

答案2

您是否在连接字符串中指定了 Connect Timeout =?如果没有,您可能需要添加它并指定 300 秒以查看是否需要更多时间。我相信默认值是 15 秒。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx

答案3

当我们将一个相当大的 Web 服务集成到我们的生产环境中时,我的团队也遇到了类似的问题。我们没有发现任何未关闭连接的情况,因此我们不得不得出结论,这些连接确实是需要的。我仍然必须说,增加连接池的最大大小感觉有点不合常理……为了节省一些谷歌搜索,下面是更改它的确切方法:

<connectionStrings>
  <add name="ConnString" 
       connectionString="Data Source=IP; Initial Catalog=DBName;User ID=User;
       Password=Pass; Max Pool Size=200;" 
       providerName="System.Data.SqlClient" />
</connectionStrings>

请注意:“最大池大小=200;

相关内容