Discussion:
[omniORB] Socket reuse by omniORB?
Igor Polonsky
2013-01-24 13:07:05 UTC
Permalink
Hi omniORB Support,

We have certain apps at work that function as CORBA clients, hitting the same CORBA server. We're planning to move the clients from Visibroker to omniORB and we've been doing some testing. The platform is Windows Server 2003 with Citrix (there are reasons why we're still on 2003).

I believe I see a couple of significant differences in how the two ORBs manage the TCP/IP connections.

1) Having created a connection, Visibroker will hold to it indefinitely. But omniORB appears to drop any connections that have been idle for about a minute or so. Could you please confirm if that's really the case? And how can we fine-tune this behavior, if need be?

2) When omniORB creates a new connection to a certain CORBA server, it seems to reuse any open connection to the same server - even if that connection has been created by an unrelated process, such as a Visibroker-based client running on the same machine. This brings a few questions:

- Could you please confirm if this is really what's happening? Or am I misinterpreting the observed behaviors?

- If the TCP socket reuse does happen, how does omniORB prevent race conditions? I'm talking about situations where two clients that share a socket want to communicate with the same server at the same time.

- Is this behavior configurable?

3) Can anyone please suggest some good reading on this subject? I'd like to understand how apps such as CORBA clients interact with the Windows OS when they create (and share?) connections. And also how CORBA connections consume other system resources, such as NP memory pool, etc. I'd like to become a slightly less dumb user of CORBA.

Any insight will be much appreciated.

Cheers,

Igor
Duncan Grisby
2013-01-24 14:29:43 UTC
Permalink
Post by Igor Polonsky
1) Having created a connection, Visibroker will hold to it
indefinitely. But omniORB appears to drop any connections that have
been idle for about a minute or so. Could you please confirm if that's
really the case? And how can we fine-tune this behavior, if need be?
Yes, that is the case. See the documentation here:

http://omniorb.sourceforge.net/omni41/omniORB/omniORB008.html#htoc100

The configuration parameter that's important is outConScanPeriod, which
defaults to 120 seconds. If you set it to zero, idle connections will
never be closed.
Post by Igor Polonsky
2) When omniORB creates a new connection to a certain CORBA server, it
seems to reuse any open connection to the same server - even if that
connection has been created by an unrelated process, such as a
Visibroker-based client running on the same machine. This brings a few
- Could you please confirm if this is really what's happening? Or am I
misinterpreting the observed behaviors?
No. There is no way that omniORB could do such a thing. What are you
seeing that makes you think that is the case? Certainly the operating
system will reuse client-side port numbers over time, but only once the
previous connection from that port is completely closed down.
Post by Igor Polonsky
3) Can anyone please suggest some good reading on this subject? I'd
like to understand how apps such as CORBA clients interact with the
Windows OS when they create (and share?) connections. And also how
CORBA connections consume other system resources, such as NP memory
pool, etc. I'd like to become a slightly less dumb user of CORBA.
Most of these concerns are specific to a particular CORBA
implementation. There is quite a lot of detail about how omniORB behaves
in its manual, in particular chapter 8 that talks about connection and
thread management.

Cheers,

Duncan.
--
-- Duncan Grisby --
-- duncan at grisby.org --
-- http://www.grisby.org --
Loading...