关于网站代码调用数据库,不论是读取数据还是插入甚至是更新数据库,都有可能遇到连接池到最大池情况。
提示信息如下:
System.Web.HttpUnhandledException: 引发类型为“System.Web.HttpUnhandledException”的异常。 ---> System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
一、客观原因
出现以上的问题,原因一般如下:
①数据库支持的最大连接数太小;
②程序代码未及时关闭数据库的连接;
③数据库本身就有问题;
出现以上问题,说明都是客观原因造成的,请大家参与本站的相关文章。
二、主观原因
有了以上的客观原因,我们也不能排除主观原因,即程序代码的问题。
本人经过实践得以证明,客观上的确存在原因,但是,自己编写的代码,的确也与此问题脱不了关系。
本如总结出两个导致发生此问题的主观原因,请大家借鉴。
①在Global.asax文件中操作数据库
俺曾经在Global.asax文件中的Session_Start中对数据库进取读取,经过观察,频繁发生此类问题。解决的问题就是不要在Global.asax中使用代码对数据库进行操作。
②在MTop.ascx的CS文件中操作数据库
俺曾经在MTop.ascx此文件的CS中对数据库进行读写操作,经过观察,频繁发生此类问题。解决的方法当然就是:尽量或干脆不要在MTop.ascx文件中对数据库进行操作。
目前,俺经过实践,就发现这两个主观上的问题;本来程序代码对数据库的操作还是正常的,但是由于代码位置的使用不当,也会造成连接超时的问题的发生。