0 c# sql-server ado.net sql-server-2005
我试图弄清楚与ADO.NET连接池相关的生产环境中异常数量越来越多的原因,我可以在日志中看到很多例外情况:
超时已过期.从池中获取连接之前经过的超时时间.这可能是因为所有池连接都在使用中并且达到了最大池大小.
我尝试的第一件事是确保所有连接都已关闭并处理掉.为此,我们将所有数据库连接更改为:
try
{
oConnection.Open();
//do something
}
catch()
{
}
finally
{
if (oConnection.State != ConnectionState.Closed)
{
oConnection.Close();
oConnection.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用以下连接字符串:
server=databaseserver;Database=databasename;User Id=username;Password=password;Max Pool Size=600;Min Pool Size=50;Connection Timeout=180;Pooling=true
Run Code Online (Sandbox Code Playgroud)
在Performance Manager,用于SqlServer的.NET数据提供程序中,我可以看到"NumberOfPooledConnections"和"NumberOfActivePooledConnections"始终低于连接字符串的最大池大小,始终在60到90个连接之间.
有谁知道怎么可能?我得到的例外是池上没有连接,但我可以看到池没有满.
我的环境:
愿有人帮帮我吗?
using (oConnection) {
oConnection.Open();
// Your code here
// No need to explicitly close or dispose
}
Run Code Online (Sandbox Code Playgroud)