崔文远 Troy Cui 老崔先生的上海生活、技术博客

还是连接池的问题,终于搞定了

上个月中旬提到过被Web.config中数据库连接池 Max Pool Size的问题折腾了,但是增加到200个最大连接池,还是会报错:

System.InvalidOperationException: 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.

本打算借助微软的免费工具Debug Diagnostic Tool v2 Update 2,搞了半天不太会用。为了省事,借助RedGate的免费14天试用的ANTS Memory Profiler free trial,终于找到问题所在。原来是连接泄露了,在connection连接后未及时使用dispose()或close()进行关闭。

在升级改进吉日嘎拉DotNet数据访问层DotNet.Utilities时,本来继承了IDisposable接口,后改为IDbHelper,但并未启用手动关闭连接。原来的IDisposable接口的主要用途是释放非托管资源。当不再使用托管对象时,垃圾回收器会自动释放分配给该对象的内存。


至此,数据库连接池的报错终于完全修复。

留言列表
发表留言
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。