That is one option, certainly. but, do you have connection pooling enabled? What is the # of connections in the DB now?
On Fri, Feb 6, 2009 at 11:04 PM, Robin Nadeau <[email protected]> wrote: > We're using SQL Server 2005. My other theory is that we simply don't have > enough database connections at peak periods. > > > On Fri, Feb 6, 2009 at 4:00 PM, Ayende Rahien <[email protected]> wrote: > >> Extremely unlikely. >> If this happens, then the session (and the connection) would go out of >> scope and would be reclaimed by the GC >> The finalizer should release the connection anyway. >> >> What DB are you talking about? >> >> >> On Fri, Feb 6, 2009 at 10:58 PM, Robin Nadeau <[email protected]> wrote: >> >>> I'm using the session-per-request pattern for nhibernate and am running >>> out of database connections. This takes about 1 week to occur on a heavily >>> loaded server, taking about 100,000 hits per day. The code I use to manage >>> my session is below. My theory is that the httpsession could timeout before >>> the EndRequest event, causing the reference to the session to be lost, and >>> therefore no closed. Is that even possible? If so, what can be done about >>> it? >>> >>> Public Class NHibernateSessionPerRequestModule >>> Implements IHttpModule >>> >>> Public Sub New() >>> End Sub >>> >>> >>> ' In the Init function, register for HttpApplication >>> ' events by adding your handlers. >>> Public Sub Init(ByVal application As HttpApplication) _ >>> Implements IHttpModule.Init >>> AddHandler application.BeginRequest, _ >>> AddressOf Me.Application_BeginRequest >>> AddHandler application.EndRequest, _ >>> AddressOf Me.Application_EndRequest >>> End Sub >>> >>> Private Sub Application_BeginRequest(ByVal source As Object, _ >>> ByVal e As EventArgs) >>> 'Fires when the request begins >>> Try >>> If >>> (HttpContext.Current.Request.Path.ToLower().IndexOf(".aspx") > -1) Then >>> Dim session As NHibernate.ISession = >>> StaticSessionManager.OpenSession() >>> session.BeginTransaction() >>> CurrentSessionContext.Bind(session) >>> End If >>> Catch ex As Exception >>> Dim objLoggingController As New >>> AlertPay.Utilities.LoggingController >>> objLoggingController.Write("Error in creating NHibernate >>> Session", "Information", 0, "0", "NHibernateSessionPerRequestModule") >>> End Try >>> >>> >>> End Sub >>> >>> Private Sub Application_EndRequest(ByVal source As Object, _ >>> ByVal e As EventArgs) >>> >>> If >>> (CurrentSessionContext.HasBind(StaticSessionManager.SessionFactory)) Then >>> Dim session As NHibernate.ISession = >>> CurrentSessionContext.Unbind(StaticSessionManager.SessionFactory) >>> If Not session Is Nothing Then >>> Try >>> session.Transaction.Commit() >>> Catch >>> session.Transaction.Rollback() >>> Dim objLoggingController As New >>> AlertPay.Utilities.LoggingController >>> objLoggingController.Write("Error in commiting >>> NHibernate Session. Rolling back transaction", "Information", 0, "0", >>> "NHibernateSessionPerRequestModule") >>> Finally >>> If session.IsOpen Then >>> session.Close() >>> End If >>> End Try >>> End If >>> End If >>> >>> >>> >>> End Sub >>> >>> Public Sub Dispose() Implements System.Web.IHttpModule.Dispose >>> End Sub >>> >>> End Class >>> >>> >>> -- >>> Robin Nadeau, B.Eng. >>> Software Developer >>> >>> >>> >> >> >> > > > -- > Robin Nadeau, B.Eng. > Software Developer > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---
