一段时间后会显示以下错误页面。
我该怎么做才能防止这种情况发生?
我有大量用户,该应用程序使用的是Oracle 11g。请建议我池大小,这样可以扩展默认最大池大小为100.
我检查了所有正确关闭的连接。我在我的应用程序中使用OracleDataReader
和Datatable
我正在使用的方法如下:
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
答案 0 :(得分:3)
通常,在以下情况下可能会发生此错误:
1)您有大量用户同时使用您的数据库并且您的免费连接用尽。可能的解决方案:增加服务器上允许的连接数和/或(如果您的系统是Web服务器)增加数据库连接字符串中指定的池大小。
2)您的系统数据库逻辑设计不佳和/或连接泄漏,例如以后未正确关闭连接打开时。解决此问题的方法是审核代码是否存在此类连接泄漏,并通过始终正确关闭连接来修复它们。