【问题标题】:timeout period elapsed. all pooled connections were in use and max pool size reached超时时间已过。所有池连接都在使用中并且达到最大池大小
【发布时间】:2011-10-09 13:01:08
【问题描述】:

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

我能做些什么来防止这种情况发生?

我有大量用户,该应用使用 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;

超时。在获得一个之前的超时时间 来自池的连接。这可能是因为所有汇集的 连接正在使用中并且已达到最大池大小。描述: 当前执行期间发生未处理的异常 网络请求。请查看堆栈跟踪以获取有关的更多信息 错误及其起源于代码的位置。

异常详细信息: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,对象 o,对象 t,EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(对象发送者, EventArgs e) +35 System.Web.UI.Control.OnLoad(EventArgs e) +91
System.Web.UI.Control.LoadRecursive() +74
System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔型 includeStagesAfterAsyncPoint) +2207

【问题讨论】:

  • 您是否在使用完连接对象后将其丢弃?

标签: asp.net oracle size pool


【解决方案1】:

一般来说,这个错误可能出现在以下几种情况:

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

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

【讨论】:

    猜你喜欢
    • 2018-07-25
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多