【发布时间】:2010-11-25 18:05:09
【问题描述】:
我试图找出生产环境中与 ADO.NET 连接池相关的异常数量增加的原因,我可以在日志中看到很多此类异常:
超时。超时时间 在获得一个之前经过 来自池的连接。这可能 已经发生,因为所有汇集 连接正在使用和最大池 已达到大小。
我尝试的第一件事是确保所有连接都已关闭和处置。为此,我们将所有数据库连接更改为:
try
{
oConnection.Open();
//do something
}
catch()
{
}
finally
{
if (oConnection.State != ConnectionState.Closed)
{
oConnection.Close();
oConnection.Dispose();
}
}
我正在使用以下连接字符串:
server=databaseserver;Database=databasename;User Id=username;Password=password;Max Pool Size=600;Min Pool Size=50;Connection Timeout=180;Pooling=true
在 Performance Manager,SqlServer 的 .NET 数据提供程序中,我可以看到“NumberOfPooledConnections”和“NumberOfActivePooledConnections”始终低于连接字符串的最大池大小,始终在 60 到 90 个连接之间。
有谁知道这怎么可能?我收到池上没有连接的异常,但我可以看到池未满。
我的环境:
- Windows Server 2003 Enterprise SP2(包含所有最新补丁)
- IIS 6.0(网络园中有 4 个工作进程,应用程序池每 60 分钟回收一次)
- SQL Server 2005
谁能帮帮我?
【问题讨论】:
标签: c# sql-server sql-server-2005 ado.net