我们有一个实时的 ASP.Net 应用程序,它被大约 1000 个并发用户使用。在这个应用程序中,我们使用了连接池。在 web.config 中定义了 2 个不同名称的连接字符串,但我们正在调用相同的数据库。
<add key="connection1" value="server=1.1.1.1;USER ID=**;pwd=**;database=test;Max Pool Size=500;Min Pool Size=50;Connection Timeout = 300; Pooling='true'" />
<add key="connection2" value="server=1.1.1.1;USER ID=**;pwd=**;database=test;Max Pool Size=500;Min Pool Size=50;Connection Timeout = 300; Pooling='true'"/>
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我们正在打开一个关闭连接的每个地方,如下所示
try{
if (connection.State == ConnectionState.Closed)
{
connection.Open();
}
}
catch(Exception ex)
{
}
finally{connection.close()}
Run Code Online (Sandbox Code Playgroud)
现在的问题是当我使用 sp_who2 检查数据库时,我看到大约 1000 或更多的睡眠会话,并且每个记录程序名称是“.Net sql server Provider”。我浏览了 MSDN,发现如果我们使用连接池,那么连接会保持打开状态直到 4-8 分钟。所以我现在有点困惑,如果我只使用 2 个连接字符串和连接池,那么为什么我们看到这么多休眠连接,我想它应该只有 2 个?有人可以在这种情况下帮助我并提出正确的建议吗?我们怎样才能最大限度地减少睡眠时间。也不确定是应用程序池(IIS 服务器)错误还是应用程序错误?请帮忙。
谢谢,