超时时间已过。所有池化连接都在使用中,并且达到了最大池大小

时间:2011-10-09 13:01:08

标签: asp.net oracle size pool

一段时间后会显示以下错误页面。

我该怎么做才能防止这种情况发生?

我有大量用户,该应用程序使用的是Oracle 11g。请建议我池大小,这样可以扩展默认最大池大小为100.

我检查了所有正确关闭的连接。我在我的应用程序中使用OracleDataReaderDatatable我正在使用的方法如下:

 public OracleDataReader BidNoIncr()
    {
        OracleConnection objOracleConnection = new OracleConnection(objDBClass.GetConnSring());
        OracleDataReader objDataReader;
        string strQuery = "Select max(BID_NO)+1 as SNumber from HH_BIDS";
        OracleCommand objOracleCommand = new OracleCommand(strQuery, objOracleConnection);
           objOracleConnection.Open();
           objDataReader = objOracleCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);       
            return objDataReader;
  

超时已过期。在获得a之前经过了超时时间   从游泳池连接。这可能是因为所有人都集中了   连接正在使用中,达到了最大池大小。描述:   在执行当前期间发生了未处理的异常   网络请求。请查看堆栈跟踪以获取更多信息   错误以及它在代码中的起源。

     

异常详细信息:System.InvalidOperationException:超时已过期。   从中获取连接之前经过的超时时间   池。这可能是因为所有汇集的连接都在   已达到使用和最大池大小。

     

源错误:在此期间生成了未处理的异常   执行当前的Web请求。有关原产地的信息   可以使用异常来识别异常的位置   堆栈跟踪下面。

     

堆栈追踪:

     

[InvalidOperationException:超时已过期。超时期限   在从池中获取连接之前已经过了。这可能有   之所以发生,是因为所有池化连接都在使用中,并且最大池大小   到了。]   System.Data.ProviderBase.DbConnectionFactory.GetConnection(的DbConnection   拥有连接)+309609
  System.Data.ProviderBase.DbConnectionClosed.OpenConnection(的DbConnection   outerConnection,DbConnectionFactory connectionFactory)+125
  System.Data.OracleClient.OracleConnection.Open()+43
  DbClass.GetConnSring()+58 DBViewRec.ViewSalvageItems()+53
  viewsalvageitems.ShowRecords()+44
  viewsalvageitems.Page_Load(Object sender,EventArgs e)+5
  System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object   o,对象t,EventArgs e)+14
  System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,   EventArgs e)+35 System.Web.UI.Control.OnLoad(EventArgs e)+91
  System.Web.UI.Control.LoadRecursive()+74
  System.Web.UI.Page.ProcessRequestMain(布尔   includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)   2207

1 个答案:

答案 0 :(得分:3)

通常,在以下情况下可能会发生此错误:

1)您有大量用户同时使用您的数据库并且您的免费连接用尽。可能的解决方案:增加服务器上允许的连接数和/或(如果您的系统是Web服务器)增加数据库连接字符串中指定的池大小。

2)您的系统数据库逻辑设计不佳和/或连接泄漏,例如以后未正确关闭连接打开时。解决此问题的方法是审核代码是否存在此类连接泄漏,并通过始终正确关闭连接来修复它们。