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

Reply via email to