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

Reply via email to