[omniORB] omniORB behaviour under load

James FitzGibbon james@targetnet.com
Tue, 12 Oct 1999 08:41:38 -0400


* Carlson, Andy (andycarlson@ipo.att.com) [991011 08:34]:

> 1. What is omniORB::maxTcpConnectionPerServer supposed to
>     do? - I expected it to throttle incoming connections after a
>     certain number, but for some reason it doesnt do this in my
>     application. Does it only apply to Strands within a Rope?

AFAIK, this is used for outbound connections in a client application.  A
test application that I wrote spawned 20 threads, each invoking a method on
a remote ORB.  Without modifying omniORB::maxTcpConnectionPerServer, running
'netstat -aan' showed no more than 5 established connections to the remote
host.  The other threads were blocked when trying to make the connection. 
As each thread finished, one blocked thread was allowed to run.  When I
raised the value, all threads made their connection concurrently.

I'm not sure if there is a companion variable to throttle inbound
connections.  If you just want to reject the connections if there are too
many already open, I suppose you could write your own gatekeeper module, as
this has high-level control of connection acceptance.

An extremely neat idea would be to extend the gatekeeper interface to allow
for more than just "Accept" and "Reject" as return values.  If one could
return "Accept" "Reject" or "Defer", and leave deferred connections in a
blocked state (these connections would then be given preference when a slot
opened up), then some very sophisticated connection management could be
implemented on a site-by-site basis.

I wonder if this could perhaps make it onto the 3.0 wishlist ?

-- 
j.

James FitzGibbon                                           james@targetnet.com
Targetnet.com Inc.                              Voice/Fax +1 416 306-0466 x908