Symeon, When we server a page the Page_load() event triggers, in which we call UniverseSessionFactory.CreateSession(), and then this session is passed to all the UniVerse routine calls on that page (during the page load process). When the page has finished rendering (i.e. just as the HTML is about to be returned to the user - Page_Unload is called at the end of the Page request, not when the user closes their browser or navigates to a different page), we call UniObjects.CloseSession(). We've checked using breakpoints that the close session call is triggering and it is (and this code works fine when connection pooling is turned off). We're using a single connection pool (for which we have 1 license that allows us 10 connections in the pool on the dev machine).
As far as we're aware there is no web garden/web farm on the dev IIS server. What is really confusing us is that this code works fine without connection pooling, but as soon as we turn connection pooling on we start getting timeouts. Cheers, Jack Jackson Pope Developer Travis Perkins Trading Company Ryehill House, Lodge Farm Industrial Estate, Northampton NN5 7UA 01604 59 2320 -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Symeon Breen Sent: 28 March 2011 16:12 To: 'U2 Users List' Subject: Re: [U2] Uodotnet and Connection Pooling Timeouts Sounds like you are not closing sessions correctly. When you say you open a session on the pool in the page load, and then close in the unload - this immediately raises alarm bells with me. Have you got the lifecycle and scope correct in the asp.net pages ? Also you have 10 connection pools - do you really have 10 or just the one ? - you need to licence the number of pools. You can check with listuser (or whatever the universe equivalent is). Is the iis application pool the app is running in set up as a garden process ? each process in the garden would then have its own pools so you would have to change the maximum connections parameter accordingly. Rgds Symeon. From: [email protected] [mailto:[email protected]] On Behalf Of Jackson Pope Sent: 28 March 2011 15:20 To: '[email protected]' Subject: [U2] Uodotnet and Connection Pooling Timeouts Hiya all, We're trying to get connection pooling working with uodotnet and currently failing miserably. When we turn connection pooling off everything works as expected, but when we turn it on we often get timeouts or errors with one of the following trace outputs: 2011-03-28T15:09:28 System.Exception: Non-negative number required. Parameter name: millisecondsTimeout Source: UniObjects Class Method: Boolean ObjWait(Boolean, Int32, System.Object) at System.Threading.Monitor.ObjWait(Boolean exitContext, Int32 millisecondsTimeout, Object obj) at System.Threading.Monitor.Wait(Object obj, Int32 millisecondsTimeout, Boolean exitContext) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniObjects.OpenSession(String hostname, Int32 port_number, String userid, String password, String account, String service, Int32 min_poolsize, Int32 max_poolsize) at TP.UNIVERSE.UniversePage.OpenSession() at TP.UNIVERSE.UniversePage.Page_Init(Object sender, EventArgs e) at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) at System.Web.UI.Control.OnInit(EventArgs e) at System.Web.UI.Page.OnInit(EventArgs e) at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 2011-03-28T15:09:32 System.Exception: [IBM U2][UODOTNET - UNICLIENT][ErrorCode=81015] The connection has timed out Source: UniObjects Class Method: IBMU2.UODOTNET.UniSession FindSession(Int32) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniPool.FindSession(Int32 pTimeout) at IBMU2.UODOTNET.UniObjects.OpenSession(String hostname, Int32 port_number, String userid, String password, String account, String service, Int32 min_poolsize, Int32 max_poolsize) at TP.UNIVERSE.UniversePage.OpenSession() at TP.UNIVERSE.UniversePage.Page_Init(Object sender, EventArgs e) at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) at System.Web.UI.Control.OnInit(EventArgs e) at System.Web.UI.Page.OnInit(EventArgs e) at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) Not all the requests fail (for example, when run through a load testing tool, 7/20 requests failed with the timeout problem). It seems that the sessions are remaining in the pool and new attempts to create a session are repeating until the timeout limit is reached (30 seconds). We're using uodotnet.dll version 2.1.1.7196 and UniVerse version 10.3. running on an HP-UX server. We've got a single license on the dev machine we're testing on with 10 connections available in the pool (theoretically!). We're writing an ASP.Net web site, and we create a new session in the Page_Load() event which is passed to all UniVerse routines and then call close on the session in Page_Unload()/Page_Error(). Any ideas as to what we're doing wrong? We expected that connection pooling would improve performance, falling back on the standard mechanism if the pool was full, but whereas the non-pooled version works fine with 20 simultaneous requests, the pooled version regularly fails. We've set the connection pooling on in the application's web.config, setting MinPoolSize to 1 and MaxPoolSize to 10, leaving everything else at the defaults. Cheers, Jack Jackson Pope Developer Travis Perkins Trading Company Ryehill House, Lodge Farm Industrial Estate, Northampton NN5 7UA 01604 59 2320 _______________________________________________ U2-Users mailing list [email protected] http://listserver.u2ug.org/mailman/listinfo/u2-users _____ No virus found in this message. Checked by AVG - www.avg.com Version: 10.0.1204 / Virus Database: 1498/3534 - Release Date: 03/27/11 _______________________________________________ U2-Users mailing list [email protected] http://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ U2-Users mailing list [email protected] http://listserver.u2ug.org/mailman/listinfo/u2-users
