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
