Asp.net 连接池问题,无泄漏(!?)

Asp.net 连接池问题,无泄漏(!?),asp.net,sql-server-2008-r2,iis-7.5,Asp.net,Sql Server 2008 R2,Iis 7.5,我有一个基于asp.net 4的web应用程序存在连接池问题 Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached 一开始我以为我忘记关闭了一些连接,但这似乎不是问题所在。当

我有一个基于asp.net 4的web应用程序存在连接池问题

Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached
一开始我以为我忘记关闭了一些连接,但这似乎不是问题所在。当我设置Pooling=False时,我可以看到所有连接都被释放(通过查看SSM)

奇怪的是,这个问题只发生在我们的生产环境中。我尝试在本地启动web应用程序,并将其连接到生产数据库,然后它工作正常(释放连接)。这让我认为它与IIS有关,但我无法找出导致此错误的原因。两种环境之间的唯一区别是,应用程序池由dev中的NetworkService和prod中的AD帐户运行。由于站点尚未启动,因此用户数量没有差异

我甚至尝试将最大池大小设置为10,以在我们的开发环境中引发错误,但它仍然有效

有什么想法吗

更新

看起来我们的连接有泄漏

using (SqlCommand cmd = new SqlCommand())
{
      cmd.CommandType = CommandType.Text;
      cmd.Connection = ConnectionUtil.CreateNewConnection();

      //query code 
}
我猜上面的代码只会处理SqlCommand,但不会关闭连接


我说的对吗?

当我忘记关闭Finally块中的连接时,我经常看到这个错误


回到经典ASP,当默认数据库语言设置为英语而不是数据库默认语言时,我经常看到“错误”。(这用于抛出无法捕获的异常-至少在经典ASP中不是这样)

应用程序中是否有一些长时间运行的线程?似乎有一些阻塞线程,它们一个等待另一个,最后超时。另外-SQL中是否有任何db/表锁?不,没有长时间运行的线程。我们根本没有看到任何db锁。应用程序有一个“播放器模式”,这会导致大量(小)查询,这会将连接计数提高到最大池大小(100)。看起来这些连接被锁定了,因为需要很长时间才能获得另一个连接。当应用程序在本地运行并且连接池计数从未超过20时,就会发生这种情况。找到答案。请参阅下面的链接。这就是问题所在。我们正在处理SqlCommand,但没有处理SqlConnection。奇怪的是,在我们的开发环境中,我们从未遇到过这样的问题,因为我们无法访问生产环境,所以很难排除故障。这种情况一直发生在我身上……请小心,并始终记住在最后一个块中关闭连接,否则你会遇到连接僵尸D