Connection Pool is Maxing out
Posted: Thu 26 Feb 2009 21:48
We are running into issues with the dotConnect for Oracle Session Store provider maxing out the connection pool limit and not releasing them. You can see the stack dump at the bottom of this post. This is even happening under relatively small loads. Once we recycle the app pools, everything clears up for awhile.
Our conn string looks like this right now and we are adjusting the Max Pool Size up:
To reproduce this issue, do the following:
1. Use your Oracle Session State Provider
2. Put about 1KB of data into session on ASP.NET page
3. Set connection limit low ... like 5
4. Use Google Chrome as your browser and hold down F5.
01eff17c 7c8285ec [GCFrame: 01eff17c]
01eff2b8 7c8285ec [HelperMethodFrame: 01eff2b8] System.Threading.Monitor.Enter(System.Object)
01eff30c 07746a0d Devart.Common.DbConnectionPool.GetObject()
01eff340 077468fe Devart.Common.DbConnectionFactory.a(Devart.Common.DbConnectionBase)
01eff370 077467dc Devart.Common.DbConnectionClosed.Open(Devart.Common.DbConnectionBase)
01eff3a0 07746737 Devart.Common.DbConnectionBase.Open()
01eff3ac 07745bc4 Devart.Data.Oracle.OracleConnection.Open()
01eff3e0 076e9bf1 Devart.Common.Web.Providers.DbSessionStateStore.SetAndReleaseItemExclusive(System.Web.HttpContext, System.String, System.Web.SessionState.SessionStateStoreData, System.Object, Boolean)
01eff498 076e2dea XXXXXXXXXXXXXXXXXXXXXXXXX`1[[System.__Canon, mscorlib]].SetAndReleaseItemExclusive(System.Web.HttpContext, System.String, System.Web.SessionState.SessionStateStoreData, System.Object, Boolean)
01eff504 660893b1 System.Web.SessionState.SessionStateModule.OnReleaseState(System.Object, System.EventArgs)
01eff53c 6608d005 System.Web.HttpApplication+SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
01eff554 6608132c System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef)
01eff594 6608c5c3 System.Web.HttpApplication+ApplicationStepManager.ResumeSteps(System.Exception)
01eff5e4 660808ac System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(System.Web.HttpContext, System.AsyncCallback, System.Object)
01eff600 66083e1c System.Web.HttpRuntime.ProcessRequestInternal(System.Web.HttpWorkerRequest)
01eff634 66083ac3 System.Web.HttpRuntime.ProcessRequestNoDemand(System.Web.HttpWorkerRequest)
01eff644 66082c5c System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr, Int32)
01eff858 79f68cde [ContextTransitionFrame: 01eff858]
01eff88c 79f68cde [GCFrame: 01eff88c]
01eff9e8 79f68cde [ComMethodFrame: 01eff9e8]
Our conn string looks like this right now and we are adjusting the Max Pool Size up:
To reproduce this issue, do the following:
1. Use your Oracle Session State Provider
2. Put about 1KB of data into session on ASP.NET page
3. Set connection limit low ... like 5
4. Use Google Chrome as your browser and hold down F5.
01eff17c 7c8285ec [GCFrame: 01eff17c]
01eff2b8 7c8285ec [HelperMethodFrame: 01eff2b8] System.Threading.Monitor.Enter(System.Object)
01eff30c 07746a0d Devart.Common.DbConnectionPool.GetObject()
01eff340 077468fe Devart.Common.DbConnectionFactory.a(Devart.Common.DbConnectionBase)
01eff370 077467dc Devart.Common.DbConnectionClosed.Open(Devart.Common.DbConnectionBase)
01eff3a0 07746737 Devart.Common.DbConnectionBase.Open()
01eff3ac 07745bc4 Devart.Data.Oracle.OracleConnection.Open()
01eff3e0 076e9bf1 Devart.Common.Web.Providers.DbSessionStateStore.SetAndReleaseItemExclusive(System.Web.HttpContext, System.String, System.Web.SessionState.SessionStateStoreData, System.Object, Boolean)
01eff498 076e2dea XXXXXXXXXXXXXXXXXXXXXXXXX`1[[System.__Canon, mscorlib]].SetAndReleaseItemExclusive(System.Web.HttpContext, System.String, System.Web.SessionState.SessionStateStoreData, System.Object, Boolean)
01eff504 660893b1 System.Web.SessionState.SessionStateModule.OnReleaseState(System.Object, System.EventArgs)
01eff53c 6608d005 System.Web.HttpApplication+SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
01eff554 6608132c System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef)
01eff594 6608c5c3 System.Web.HttpApplication+ApplicationStepManager.ResumeSteps(System.Exception)
01eff5e4 660808ac System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(System.Web.HttpContext, System.AsyncCallback, System.Object)
01eff600 66083e1c System.Web.HttpRuntime.ProcessRequestInternal(System.Web.HttpWorkerRequest)
01eff634 66083ac3 System.Web.HttpRuntime.ProcessRequestNoDemand(System.Web.HttpWorkerRequest)
01eff644 66082c5c System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr, Int32)
01eff858 79f68cde [ContextTransitionFrame: 01eff858]
01eff88c 79f68cde [GCFrame: 01eff88c]
01eff9e8 79f68cde [ComMethodFrame: 01eff9e8]