Discussion:
AW: [omniORB] fixed-length structs
Fischer, Clemens
2007-07-11 14:13:09 UTC
Permalink
Hi,

the difference in fixed-length and variable-length structs is that the former ones are returned by value, not by pointer. Yet another of the thousand pitfalls in the IDL to C++ mapping.

In case your get() method is an implemetatation of a CORBA interface method, the correct signature would be DateTime get( <stuff> ). It's also not necessary to create a DateTime instance on the heap. You can simply do it like this:

DateTime get( <stuff> )
{
DateTime ret;
ret.year = 2007;
...
ret.seconds = 0;
return ret;
}

So you don't need the _var type at all. I guess it's only there for symmetry and in case you later want to make the struct variable-length without changing your code.

If you take a look at _CORBA_ConstrType_Fix_Var, you'll notice that it handles its content by value instead of pointer and immediately deletes the value passed as pointer to its contructor.

Kind Regards
Clemens Fischer


-----Urspr?ngliche Nachricht-----
Von: omniorb-list-***@omniorb-support.com [mailto:omniorb-list-***@omniorb-support.com] Im Auftrag von Sean Parker
Gesendet: Mittwoch, 11. Juli 2007 02:08
An: omniorb-***@omniorb-support.com
Betreff: [omniORB] fixed-length structs

Hello -

I've encountered an issue simply because I'm trying to
use a struct for the first that is "fixed length" (i.e.
it's a series of longs, w/o a string in it)

For example, I define a struct:

[Begin IDL]
struct DateTime
{
long year;
...
long seconds;
};
[End IDL]

This results in C++ template using the *_Fix_* class (I
forget the exact name) as opposed to the *_Variable_*
template class if the struct had a string in it.

[Begin C++]
DateTime* get( <stuff> )
{
DateTime_var ret = new DateTime();
ret->year = 2007;
...
ret->seconds = 0;
return ret._retn();
}
[End C++]

Now the compile complains "can't convert DateTime to
DateTime* in return" on return line.

I never had this problem when the template class was for
variable-length structs. Am I doing something wrong?

Any assistance appreciated.

Thanks and God Bless
Sean





God Bless
Sean Parker






____________________________________________________________________________________
Get the free Yahoo! toolbar and rest assured with the added security of spyware protection.
http://new.toolbar.yahoo.com/toolbar/features/norton/index.php
Sean Parker
2007-07-11 17:49:53 UTC
Permalink
Thanks so much - I'll try it...

Sean

--- "Fischer, Clemens"
Post by Fischer, Clemens
Hi,
the difference in fixed-length and variable-length
structs is that the former ones are returned by value,
not by pointer. Yet another of the thousand pitfalls in
the IDL to C++ mapping.
In case your get() method is an implemetatation of a
CORBA interface method, the correct signature would be
DateTime get( <stuff> ). It's also not necessary to
create a DateTime instance on the heap. You can simply do
DateTime get( <stuff> )
{
DateTime ret;
ret.year = 2007;
...
ret.seconds = 0;
return ret;
}
So you don't need the _var type at all. I guess it's only
there for symmetry and in case you later want to make the
struct variable-length without changing your code.
If you take a look at _CORBA_ConstrType_Fix_Var, you'll
notice that it handles its content by value instead of
pointer and immediately deletes the value passed as
pointer to its contructor.
Kind Regards
Clemens Fischer
-----Urspr?ngliche Nachricht-----
Auftrag von Sean Parker
Gesendet: Mittwoch, 11. Juli 2007 02:08
Betreff: [omniORB] fixed-length structs
Hello -
I've encountered an issue simply because I'm trying to
use a struct for the first that is "fixed length" (i.e.
it's a series of longs, w/o a string in it)
[Begin IDL]
struct DateTime
{
long year;
...
long seconds;
};
[End IDL]
This results in C++ template using the *_Fix_* class (I
forget the exact name) as opposed to the *_Variable_*
template class if the struct had a string in it.
[Begin C++]
DateTime* get( <stuff> )
{
DateTime_var ret = new DateTime();
ret->year = 2007;
...
ret->seconds = 0;
return ret._retn();
}
[End C++]
Now the compile complains "can't convert DateTime to
DateTime* in return" on return line.
I never had this problem when the template class was for
variable-length structs. Am I doing something wrong?
Any assistance appreciated.
Thanks and God Bless
Sean
God Bless
Sean Parker
____________________________________________________________________________________
Post by Fischer, Clemens
Get the free Yahoo! toolbar and rest assured with the
added security of spyware protection.
http://new.toolbar.yahoo.com/toolbar/features/norton/index.php
Post by Fischer, Clemens
_______________________________________________
omniORB-list mailing list
http://www.omniorb-support.com/mailman/listinfo/omniorb-list
God Bless
Sean Parker






____________________________________________________________________________________
Need a vacation? Get great deals
to amazing places on Yahoo! Travel.
http://travel.yahoo.com/
Wernke zur Borg
2007-07-11 19:13:33 UTC
Permalink
I am only wondering why the IDL compiler has generated the wrong function signature... ;-)

Just a hint: Always use the -Wbexample option of omniidl to generate your function skeletons. This prevents you from mistyping the signatures.

Wernke
-----Original Message-----
Of Sean Parker
Sent: 11 July 2007 13:50
Subject: Re: AW: [omniORB] fixed-length structs
Thanks so much - I'll try it...
Sean
--- "Fischer, Clemens"
Post by Fischer, Clemens
Hi,
the difference in fixed-length and variable-length
structs is that the former ones are returned by value,
not by pointer. Yet another of the thousand pitfalls in
the IDL to C++ mapping.
In case your get() method is an implemetatation of a
CORBA interface method, the correct signature would be
DateTime get( <stuff> ). It's also not necessary to
create a DateTime instance on the heap. You can simply do
DateTime get( <stuff> )
{
DateTime ret;
ret.year = 2007;
...
ret.seconds = 0;
return ret;
}
So you don't need the _var type at all. I guess it's only
there for symmetry and in case you later want to make the
struct variable-length without changing your code.
If you take a look at _CORBA_ConstrType_Fix_Var, you'll
notice that it handles its content by value instead of
pointer and immediately deletes the value passed as
pointer to its contructor.
Kind Regards
Clemens Fischer
-----Urspr?ngliche Nachricht-----
Auftrag von Sean Parker
Gesendet: Mittwoch, 11. Juli 2007 02:08
Betreff: [omniORB] fixed-length structs
Hello -
I've encountered an issue simply because I'm trying to
use a struct for the first that is "fixed length" (i.e.
it's a series of longs, w/o a string in it)
[Begin IDL]
struct DateTime
{
long year;
...
long seconds;
};
[End IDL]
This results in C++ template using the *_Fix_* class (I
forget the exact name) as opposed to the *_Variable_*
template class if the struct had a string in it.
[Begin C++]
DateTime* get( <stuff> )
{
DateTime_var ret = new DateTime();
ret->year = 2007;
...
ret->seconds = 0;
return ret._retn();
}
[End C++]
Now the compile complains "can't convert DateTime to
DateTime* in return" on return line.
I never had this problem when the template class was for
variable-length structs. Am I doing something wrong?
Any assistance appreciated.
Thanks and God Bless
Sean
Sean Parker
2007-07-11 19:41:42 UTC
Permalink
Wernke -

It didn't generate the wrong sig - I was going on my
previous usage when the struct WAS variable length - all of
mine had been up till this point...

Thanks for the info on the idl compiler option.

Sean
Post by Wernke zur Borg
I am only wondering why the IDL compiler has generated
the wrong function signature... ;-)
Just a hint: Always use the -Wbexample option of omniidl
to generate your function skeletons. This prevents you
from mistyping the signatures.
Wernke
-----Original Message-----
Behalf
Of Sean Parker
Sent: 11 July 2007 13:50
Subject: Re: AW: [omniORB] fixed-length structs
Thanks so much - I'll try it...
Sean
--- "Fischer, Clemens"
Post by Fischer, Clemens
Hi,
the difference in fixed-length and variable-length
structs is that the former ones are returned by
value,
Post by Fischer, Clemens
not by pointer. Yet another of the thousand pitfalls
in
Post by Fischer, Clemens
the IDL to C++ mapping.
In case your get() method is an implemetatation of a
CORBA interface method, the correct signature would
be
Post by Fischer, Clemens
DateTime get( <stuff> ). It's also not necessary to
create a DateTime instance on the heap. You can
simply do
Post by Fischer, Clemens
DateTime get( <stuff> )
{
DateTime ret;
ret.year = 2007;
...
ret.seconds = 0;
return ret;
}
So you don't need the _var type at all. I guess it's
only
Post by Fischer, Clemens
there for symmetry and in case you later want to make
the
Post by Fischer, Clemens
struct variable-length without changing your code.
If you take a look at _CORBA_ConstrType_Fix_Var,
you'll
Post by Fischer, Clemens
notice that it handles its content by value instead
of
Post by Fischer, Clemens
pointer and immediately deletes the value passed as
pointer to its contructor.
Kind Regards
Clemens Fischer
-----Urspr?ngliche Nachricht-----
Auftrag von Sean Parker
Gesendet: Mittwoch, 11. Juli 2007 02:08
Betreff: [omniORB] fixed-length structs
Hello -
I've encountered an issue simply because I'm trying
to
Post by Fischer, Clemens
use a struct for the first that is "fixed length"
(i.e.
Post by Fischer, Clemens
it's a series of longs, w/o a string in it)
[Begin IDL]
struct DateTime
{
long year;
...
long seconds;
};
[End IDL]
This results in C++ template using the *_Fix_*
class (I
Post by Fischer, Clemens
forget the exact name) as opposed to the *_Variable_*
template class if the struct had a string in it.
[Begin C++]
DateTime* get( <stuff> )
{
DateTime_var ret = new DateTime();
ret->year = 2007;
...
ret->seconds = 0;
return ret._retn();
}
[End C++]
Now the compile complains "can't convert DateTime
to
Post by Fischer, Clemens
DateTime* in return" on return line.
I never had this problem when the template class was
for
Post by Fischer, Clemens
variable-length structs. Am I doing something wrong?
Any assistance appreciated.
Thanks and God Bless
Sean
God Bless
Sean Parker






____________________________________________________________________________________Ready for the edge of your seat?
Check out tonight's top picks on Yahoo! TV.
http://tv.yahoo.com/
Sean Parker
2007-08-03 19:38:57 UTC
Permalink
Hello -

I've redeployed code to our field hosts and now have an
error I hadn't seen before. I don't think I've altered
things to impact this but who knows....

Using OmniOrb 4.1 on Linux RH9+. The thing that's
different is deploying an app that monitors applications
using Omni. (I get same error from other redeployed apps
and original field apps I haven't altered, so I assume it's
in the monitoring app.)

[begin trace output of concern]

omniORB input message: giop:<host>:<port> 286 bytes:
<blah> <blah> GIOP............
<blah> <blah><blah> <blah> <looks good>
<blah> <blah><blah> <blah> <looks good>
<blah> <blah><blah> <blah> <looks good>
...
...
...
<blah> <blah><blah> <blah> <looks good>
blah blah blah blah blah blah blah 0052 <string I
expect>.R
d707 0000 0800 0000 0300 0000 0d00 0000
1100 0000 1a00 0000 0200 0000 3000
Garbage left at end of input message from <host>:<port>
from endpoint: giop:<host>:<port>. Detected GIOP 1.2
protocol error in input message. giopImpl12.cc:819
Connection is closed.

[end trace output of concern]

One thing I did fix in this new version was changing one of
my struct contents from numbers-plus-string to all numbers
(a Date type) which is likely passed in this data. (

However I don't this error on our test bed (RHEL) (~1/20
the scale in terms of apps/hosts) nor my laptop (RH9), all
using same OmniORB version/build.

Any assistance appreciated.

Thanks and God Bless.
Sean






God Bless
Sean Parker






____________________________________________________________________________________
Take the Internet to Go: Yahoo!Go puts the Internet in your pocket: mail, news, photos & more.
http://mobile.yahoo.com/go?refer=1GNXIC
Sean Parker
2007-08-03 19:41:56 UTC
Permalink
Post by Sean Parker
One thing I did fix in this new version was changing one
of
my struct contents from numbers-plus-string to all
numbers
(a Date type) which is likely passed in this data. (
I meant to add [before the 'send' button interrupted me
:-)]:

related to message: '[omniORB] fixed-length structs'
responded by Fischer, Clemens, response to my previous
issue follows:

"Hi [Sean],

the difference in fixed-length and variable-length structs
is that the former ones are returned by value, not by
pointer. Yet another of the thousand pitfalls in the IDL
to C++
mapping.

In case your get() method is an implemetatation of a CORBA
interface method, the correct signature would be DateTime
get( <stuff> ). It's also not necessary to create a
DateTime
instance on the heap. You can simply do it like this:

DateTime get( <stuff> )
{
DateTime ret;
ret.year = 2007;
...
ret.seconds = 0;
return ret;
}

So you don't need the _var type at all. I guess it's only
there for symmetry and in case you later want to make the
struct variable-length without changing your code.

If you take a look at _CORBA_ConstrType_Fix_Var, you'll
notice that it handles its content by value instead of
pointer
and immediately deletes the value passed as pointer to its
contructor.

Kind Regards
Clemens Fischer
"




God Bless
Sean Parker






____________________________________________________________________________________
Sick sense of humor? Visit Yahoo! TV's
Comedy with an Edge to see what's on, when.
http://tv.yahoo.com/collections/222
Sean Parker
2007-08-03 19:56:11 UTC
Permalink
Correction - I'm using OO 4.0.6
Post by Sean Parker
Post by Sean Parker
One thing I did fix in this new version was changing
one
Post by Sean Parker
of
my struct contents from numbers-plus-string to all
numbers
(a Date type) which is likely passed in this data. (
I meant to add [before the 'send' button interrupted me
related to message: '[omniORB] fixed-length structs'
responded by Fischer, Clemens, response to my previous
"Hi [Sean],
the difference in fixed-length and variable-length
structs
is that the former ones are returned by value, not by
pointer. Yet another of the thousand pitfalls in the IDL
to C++
mapping.
In case your get() method is an implemetatation of a
CORBA
interface method, the correct signature would be
DateTime
get( <stuff> ). It's also not necessary to create a
DateTime
DateTime get( <stuff> )
{
DateTime ret;
ret.year = 2007;
...
ret.seconds = 0;
return ret;
}
So you don't need the _var type at all. I guess it's only
there for symmetry and in case you later want to make
the
struct variable-length without changing your code.
If you take a look at _CORBA_ConstrType_Fix_Var, you'll
notice that it handles its content by value instead of
pointer
and immediately deletes the value passed as pointer to
its
contructor.
Kind Regards
Clemens Fischer
"
God Bless
Sean Parker
____________________________________________________________________________________
Post by Sean Parker
Sick sense of humor? Visit Yahoo! TV's
Comedy with an Edge to see what's on, when.
http://tv.yahoo.com/collections/222
_______________________________________________
omniORB-list mailing list
http://www.omniorb-support.com/mailman/listinfo/omniorb-list
God Bless
Sean Parker





____________________________________________________________________________________
Park yourself in front of a world of choices in alternative vehicles. Visit the Yahoo! Auto Green Center.
http://autos.yahoo.com/green_center/
Duncan Grisby
2007-08-04 22:15:29 UTC
Permalink
On Friday 3 August, Sean Parker wrote:

[...]
Post by Sean Parker
Garbage left at end of input message from <host>:<port>
from endpoint: giop:<host>:<port>. Detected GIOP 1.2
protocol error in input message. giopImpl12.cc:819
Connection is closed.
[end trace output of concern]
One thing I did fix in this new version was changing one of
my struct contents from numbers-plus-string to all numbers
(a Date type) which is likely passed in this data. (
Are you certain that all instances of the software involved have been
updated? The error you see is one of the things that can occur if the
client and server don't have the same idea of the IDL definitions.
Post by Sean Parker
However I don't this error on our test bed (RHEL) (~1/20
the scale in terms of apps/hosts) nor my laptop (RH9), all
using same OmniORB version/build.
This is another thing that makes me suspect that something is still
using the old IDL definitions.

Cheers,

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Sean Parker
2007-08-06 07:13:59 UTC
Permalink
Thanks for the reply -

I'll try to be pessimistic about my system, however I'm
using a fairly thorough deployment scheme that [hopefully
:-)] ensures that the proper versions of code are installed
and referenced during application/service start-up.

Next time I get on the system I'll try to prove one way
or the other.

Thanks and Cheers - (have a beer for me)

Sean
Post by Sean Parker
[...]
Post by Sean Parker
Garbage left at end of input message from <host>:<port>
from endpoint: giop:<host>:<port>. Detected GIOP 1.2
protocol error in input message. giopImpl12.cc:819
Connection is closed.
[end trace output of concern]
One thing I did fix in this new version was changing
one of
Post by Sean Parker
my struct contents from numbers-plus-string to all
numbers
Post by Sean Parker
(a Date type) which is likely passed in this data. (
Are you certain that all instances of the software
involved have been
updated? The error you see is one of the things that can
occur if the
client and server don't have the same idea of the IDL
definitions.
Post by Sean Parker
However I don't this error on our test bed (RHEL)
(~1/20
Post by Sean Parker
the scale in terms of apps/hosts) nor my laptop (RH9),
all
Post by Sean Parker
using same OmniORB version/build.
This is another thing that makes me suspect that
something is still
using the old IDL definitions.
Cheers,
Duncan.
--
-- Duncan Grisby --
-- http://www.grisby.org --
God Bless
Sean Parker






____________________________________________________________________________________
Moody friends. Drama queens. Your life? Nope! - their life, your story. Play Sims Stories at Yahoo! Games.
http://sims.yahoo.com/
Sean Parker
2007-08-11 02:45:48 UTC
Permalink
Hello -

(Duncan - I haven't resolved the GIOP error issue yet -
it doesn't seem to be IDL-mismatch, but I've got bigger
fish to fry right now. "-ORBstrictIIOP 0" keeps us going
for now... and I don't think it's related to the issue
below, since I've had these performance problems way before
the GIOP error came up)

Thanks to OminORB for being as good as it is - we're
pounding the hell out of it, and I think I need to start
optimizing things in order for us to have a well-behaved
system. Our system is basically 100+ servers (RH 9 and
above) with ~200 CORBA servers (many identical.)

We have a SystemMonitor that collects data from each
server, and a DataRepository that most servers post data
to. Needless to say the SystemMonitor and DataRepository
are hurting unless I do something NOW to relieve the
pressure :-)

We have ~ 5 Java applications, using Sun's canned ORB to
access the SystemMonitor for status also. One of them is a
Servlet running in Tomcat. The problem seems to be that the
SystemMonitor is so busy COLLECTING data, (and the rest of
the system is verifying that the SystemMonitor is up, so
they ping the SystemMonitor occasionally and pushing
monitor data) that the Servlet accesses to get monitor data
for display fail, even though the monitor seems to be up
and running. (i.e. Transient exc, for example)

I presume this is a timeout due to inability to obtain a
connection on the SystemMonitor. Is this likely? I setup
the SystemMonitor to free up connections as fast as
possible: scanGranularity=1, inConScanPeriod=1,
outConScanPeriod=1. (is this doing what I think it should?)
Does anyone have experience with any issues between Sun's
ORB and OmniORB that may raise it's ugly head on this
issue?

*****
As a side question, I can't find any info on tuning Sun's
ORB (Thanks Duncan for all of OmniORB's options), like
timeouts, etc. Any info you know of?
*****

In general, what's the best way to ensure that a server,
that will be pounded, will most-likely be able to service
as many connections as possible, especially when each
method call is quick to return? Also, how would I go about
increasing the number of threads allowed, so I can increase
the thread/connection combination above 256? (I'm allowing
only 1 or 2 threads/connection, since it's likely that any
client won't be pegging the SystemMonitor from more than
one thread)

I suppose you people are like "what the hell is he
doing"? or "that's a silly design"? or "he should do
this..." Any suggestions appreciated.


Thanks and God Bless
Sean






God Bless
Sean Parker





____________________________________________________________________________________
Fussy? Opinionated? Impossible to please? Perfect. Join Yahoo!'s user panel and lay it on us. http://surveylink.yahoo.com/gmrs/yahoo_panel_invite.asp?a=7
Ridgway, Richard (London)
2007-08-11 03:14:12 UTC
Permalink
I recommend jacorb rather than sun for the Java ORB. There's plenty of
tuning available there. I've no personal experience with the Sun ORB,
but I haven't heard anything good about it...

Quick browse of the omniorb manual indicates maxServerThreadPoolSize is
probably what you need.


-----Original Message-----
From: omniorb-list-***@omniorb-support.com
[mailto:omniorb-list-***@omniorb-support.com] On Behalf Of Sean
Parker
Sent: 10 August 2007 21:45
To: omniorb-***@omniorb-support.com
Subject: [omniORB] General Performance Strategy Questions...



Hello -

(Duncan - I haven't resolved the GIOP error issue yet -
it doesn't seem to be IDL-mismatch, but I've got bigger
fish to fry right now. "-ORBstrictIIOP 0" keeps us going
for now... and I don't think it's related to the issue
below, since I've had these performance problems way before
the GIOP error came up)

Thanks to OminORB for being as good as it is - we're
pounding the hell out of it, and I think I need to start
optimizing things in order for us to have a well-behaved
system. Our system is basically 100+ servers (RH 9 and
above) with ~200 CORBA servers (many identical.)

We have a SystemMonitor that collects data from each
server, and a DataRepository that most servers post data
to. Needless to say the SystemMonitor and DataRepository
are hurting unless I do something NOW to relieve the
pressure :-)

We have ~ 5 Java applications, using Sun's canned ORB to
access the SystemMonitor for status also. One of them is a
Servlet running in Tomcat. The problem seems to be that the
SystemMonitor is so busy COLLECTING data, (and the rest of
the system is verifying that the SystemMonitor is up, so
they ping the SystemMonitor occasionally and pushing
monitor data) that the Servlet accesses to get monitor data
for display fail, even though the monitor seems to be up
and running. (i.e. Transient exc, for example)

I presume this is a timeout due to inability to obtain a
connection on the SystemMonitor. Is this likely? I setup
the SystemMonitor to free up connections as fast as
possible: scanGranularity=1, inConScanPeriod=1,
outConScanPeriod=1. (is this doing what I think it should?)
Does anyone have experience with any issues between Sun's
ORB and OmniORB that may raise it's ugly head on this
issue?

*****
As a side question, I can't find any info on tuning Sun's
ORB (Thanks Duncan for all of OmniORB's options), like
timeouts, etc. Any info you know of?
*****

In general, what's the best way to ensure that a server,
that will be pounded, will most-likely be able to service
as many connections as possible, especially when each
method call is quick to return? Also, how would I go about
increasing the number of threads allowed, so I can increase
the thread/connection combination above 256? (I'm allowing
only 1 or 2 threads/connection, since it's likely that any
client won't be pegging the SystemMonitor from more than
one thread)

I suppose you people are like "what the hell is he
doing"? or "that's a silly design"? or "he should do
this..." Any suggestions appreciated.


Thanks and God Bless
Sean






God Bless
Sean Parker






________________________________________________________________________
____________
Fussy? Opinionated? Impossible to please? Perfect. Join Yahoo!'s user
panel and lay it on us.
http://surveylink.yahoo.com/gmrs/yahoo_panel_invite.asp?a=7


_______________________________________________
omniORB-list mailing list
omniORB-***@omniorb-support.com
http://www.omniorb-support.com/mailman/listinfo/omniorb-list
--------------------------------------------------------

This message w/attachments (message) may be privileged, confidential or proprietary, and if you are not an intended recipient, please notify the sender, do not use or share it and delete it. Unless specifically indicated, this message is not an offer to sell or a solicitation of any investment products or other financial product or service, an official confirmation of any transaction, or an official statement of Merrill Lynch. Subject to applicable law, Merrill Lynch may monitor, review and retain e-communications (EC) traveling through its networks/systems. The laws of the country of each sender/recipient may impact the handling of EC, and EC may be archived, supervised and produced in countries other than the country in which you are located. This message cannot be guaranteed to be secure or error-free. This message is subject to terms available at the following link: http://www.ml.com/e-communications_terms/. By messaging with Merrill Lynch you consent to the foregoing.
--------------------------------------------------------
Sean Parker
2007-08-13 06:53:21 UTC
Permalink
Thanks Richard for your reply. I was looking more for
OS-level (or changes I can make to omniORB and recompile)
that would allow more than the apparent 256 threads. Does
this limit sound familiar? I had been playing with various
permutations of thr/conn, thr policy, idle conn timeouts,
etc. and there seems to be a 256 thread ceiling.

I had recently set the setrlimit() libc function, for
increasing the # open file handles, and that seemed to
help. Is that the only real thing I can aside from
redesigning my server?

Thanks
Sean
Post by Ridgway, Richard (London)
I recommend jacorb rather than sun for the Java ORB.
There's plenty of
tuning available there. I've no personal experience with
the Sun ORB,
but I haven't heard anything good about it...
Quick browse of the omniorb manual indicates
maxServerThreadPoolSize is
probably what you need.
-----Original Message-----
Behalf Of Sean
Parker
Sent: 10 August 2007 21:45
Subject: [omniORB] General Performance Strategy
Questions...
Hello -
(Duncan - I haven't resolved the GIOP error issue yet -
it doesn't seem to be IDL-mismatch, but I've got bigger
fish to fry right now. "-ORBstrictIIOP 0" keeps us going
for now... and I don't think it's related to the issue
below, since I've had these performance problems way
before
the GIOP error came up)
Thanks to OminORB for being as good as it is - we're
pounding the hell out of it, and I think I need to start
optimizing things in order for us to have a well-behaved
system. Our system is basically 100+ servers (RH 9 and
above) with ~200 CORBA servers (many identical.)
We have a SystemMonitor that collects data from each
server, and a DataRepository that most servers post data
to. Needless to say the SystemMonitor and DataRepository
are hurting unless I do something NOW to relieve the
pressure :-)
We have ~ 5 Java applications, using Sun's canned ORB
to
access the SystemMonitor for status also. One of them is
a
Servlet running in Tomcat. The problem seems to be that
the
SystemMonitor is so busy COLLECTING data, (and the rest
of
the system is verifying that the SystemMonitor is up, so
they ping the SystemMonitor occasionally and pushing
monitor data) that the Servlet accesses to get monitor
data
for display fail, even though the monitor seems to be up
and running. (i.e. Transient exc, for example)
I presume this is a timeout due to inability to obtain
a
connection on the SystemMonitor. Is this likely? I setup
the SystemMonitor to free up connections as fast as
possible: scanGranularity=1, inConScanPeriod=1,
outConScanPeriod=1. (is this doing what I think it
should?)
Does anyone have experience with any issues between Sun's
ORB and OmniORB that may raise it's ugly head on this
issue?
*****
As a side question, I can't find any info on tuning Sun's
ORB (Thanks Duncan for all of OmniORB's options), like
timeouts, etc. Any info you know of?
*****
In general, what's the best way to ensure that a
server,
that will be pounded, will most-likely be able to service
as many connections as possible, especially when each
method call is quick to return? Also, how would I go
about
increasing the number of threads allowed, so I can
increase
the thread/connection combination above 256? (I'm
allowing
only 1 or 2 threads/connection, since it's likely that
any
client won't be pegging the SystemMonitor from more than
one thread)
I suppose you people are like "what the hell is he
doing"? or "that's a silly design"? or "he should do
this..." Any suggestions appreciated.
Thanks and God Bless
Sean
God Bless
Sean Parker
________________________________________________________________________
Post by Ridgway, Richard (London)
____________
Fussy? Opinionated? Impossible to please? Perfect. Join
Yahoo!'s user
panel and lay it on us.
http://surveylink.yahoo.com/gmrs/yahoo_panel_invite.asp?a=7
Post by Ridgway, Richard (London)
_______________________________________________
omniORB-list mailing list
http://www.omniorb-support.com/mailman/listinfo/omniorb-list
Post by Ridgway, Richard (London)
--------------------------------------------------------
This message w/attachments (message) may be privileged,
confidential or proprietary, and if you are not an
intended recipient, please notify the sender, do not use
or share it and delete it. Unless specifically indicated,
this message is not an offer to sell or a solicitation of
any investment products or other financial product or
service, an official confirmation of any transaction, or
an official statement of Merrill Lynch. Subject to
applicable law, Merrill Lynch may monitor, review and
retain e-communications (EC) traveling through its
networks/systems. The laws of the country of each
sender/recipient may impact the handling of EC, and EC
may be archived, supervised and produced in countries
other than the country in which you are located. This
message cannot be guaranteed to be secure or error-free.
This message is subject to terms available at the
http://www.ml.com/e-communications_terms/. By messaging
with Merrill Lynch you consent to the foregoing.
--------------------------------------------------------
God Bless
Sean Parker






____________________________________________________________________________________
Take the Internet to Go: Yahoo!Go puts the Internet in your pocket: mail, news, photos & more.
http://mobile.yahoo.com/go?refer=1GNXIC
Ridgway, Richard (London)
2007-08-13 13:04:45 UTC
Permalink
The 256 is probably an artificial limit, but going much above that you
will tend to hit performance problems in the server. What platform are
you on? The file descriptor limit is platform dependant. What is your
max no. file descriptors? There's a hard threshold and a soft threshold
- you won't be able to change the hard upper limit without privileged
access. 'lsof' will tell you what file descriptors you have open and let
you see them (& count them!).

sh-3.00$ ulimit -a
open files (-n) 1024
stack size (kbytes, -s) 10240

The other thing worth checking is that you aren't allocating a 10Mb
stack for each thread (as is default for me), as that would quickly get
out of hand. 'pmap' shows this (look for 256 chunks of 10mb!)

I actually use TAO on the server side, and only use omniorb (through
python) as a client side orb - so there may be a hard limit of 256 in
there somewhere, but I very much doubt it.


-----Original Message-----
From: Sean Parker [mailto:***@yahoo.com]
Sent: 13 August 2007 01:53
To: Ridgway, Richard (London); omniorb-***@omniorb-support.com
Subject: RE: [omniORB] General Performance Strategy Questions...



Thanks Richard for your reply. I was looking more for
OS-level (or changes I can make to omniORB and recompile)
that would allow more than the apparent 256 threads. Does
this limit sound familiar? I had been playing with various
permutations of thr/conn, thr policy, idle conn timeouts,
etc. and there seems to be a 256 thread ceiling.

I had recently set the setrlimit() libc function, for
increasing the # open file handles, and that seemed to
help. Is that the only real thing I can aside from
redesigning my server?

Thanks
Sean
Post by Ridgway, Richard (London)
I recommend jacorb rather than sun for the Java ORB.
There's plenty of
tuning available there. I've no personal experience with
the Sun ORB,
but I haven't heard anything good about it...
Quick browse of the omniorb manual indicates
maxServerThreadPoolSize is
probably what you need.
-----Original Message-----
Behalf Of Sean
Parker
Sent: 10 August 2007 21:45
Subject: [omniORB] General Performance Strategy
Questions...
Hello -
(Duncan - I haven't resolved the GIOP error issue yet -
it doesn't seem to be IDL-mismatch, but I've got bigger
fish to fry right now. "-ORBstrictIIOP 0" keeps us going
for now... and I don't think it's related to the issue
below, since I've had these performance problems way
before
the GIOP error came up)
Thanks to OminORB for being as good as it is - we're
pounding the hell out of it, and I think I need to start
optimizing things in order for us to have a well-behaved
system. Our system is basically 100+ servers (RH 9 and
above) with ~200 CORBA servers (many identical.)
We have a SystemMonitor that collects data from each
server, and a DataRepository that most servers post data
to. Needless to say the SystemMonitor and DataRepository
are hurting unless I do something NOW to relieve the
pressure :-)
We have ~ 5 Java applications, using Sun's canned ORB
to
access the SystemMonitor for status also. One of them is
a
Servlet running in Tomcat. The problem seems to be that
the
SystemMonitor is so busy COLLECTING data, (and the rest
of
the system is verifying that the SystemMonitor is up, so
they ping the SystemMonitor occasionally and pushing
monitor data) that the Servlet accesses to get monitor
data
for display fail, even though the monitor seems to be up
and running. (i.e. Transient exc, for example)
I presume this is a timeout due to inability to obtain
a
connection on the SystemMonitor. Is this likely? I setup
the SystemMonitor to free up connections as fast as
possible: scanGranularity=1, inConScanPeriod=1,
outConScanPeriod=1. (is this doing what I think it
should?)
Does anyone have experience with any issues between Sun's
ORB and OmniORB that may raise it's ugly head on this
issue?
*****
As a side question, I can't find any info on tuning Sun's
ORB (Thanks Duncan for all of OmniORB's options), like
timeouts, etc. Any info you know of?
*****
In general, what's the best way to ensure that a
server,
that will be pounded, will most-likely be able to service
as many connections as possible, especially when each
method call is quick to return? Also, how would I go
about
increasing the number of threads allowed, so I can
increase
the thread/connection combination above 256? (I'm
allowing
only 1 or 2 threads/connection, since it's likely that
any
client won't be pegging the SystemMonitor from more than
one thread)
I suppose you people are like "what the hell is he
doing"? or "that's a silly design"? or "he should do
this..." Any suggestions appreciated.
Thanks and God Bless
Sean
God Bless
Sean Parker
________________________________________________________________________
Post by Ridgway, Richard (London)
____________
Fussy? Opinionated? Impossible to please? Perfect. Join
Yahoo!'s user
panel and lay it on us.
http://surveylink.yahoo.com/gmrs/yahoo_panel_invite.asp?a=7
Post by Ridgway, Richard (London)
_______________________________________________
omniORB-list mailing list
http://www.omniorb-support.com/mailman/listinfo/omniorb-list
Post by Ridgway, Richard (London)
--------------------------------------------------------
This message w/attachments (message) may be privileged,
confidential or proprietary, and if you are not an
intended recipient, please notify the sender, do not use
or share it and delete it. Unless specifically indicated,
this message is not an offer to sell or a solicitation of
any investment products or other financial product or
service, an official confirmation of any transaction, or
an official statement of Merrill Lynch. Subject to
applicable law, Merrill Lynch may monitor, review and
retain e-communications (EC) traveling through its
networks/systems. The laws of the country of each
sender/recipient may impact the handling of EC, and EC
may be archived, supervised and produced in countries
other than the country in which you are located. This
message cannot be guaranteed to be secure or error-free.
This message is subject to terms available at the
http://www.ml.com/e-communications_terms/. By messaging
with Merrill Lynch you consent to the foregoing.
--------------------------------------------------------
God Bless
Sean Parker






________________________________________________________________________
____________
Take the Internet to Go: Yahoo!Go puts the Internet in your pocket:
mail, news, photos & more.
http://mobile.yahoo.com/go?refer=1GNXIC
--------------------------------------------------------

This message w/attachments (message) may be privileged, confidential or proprietary, and if you are not an intended recipient, please notify the sender, do not use or share it and delete it. Unless specifically indicated, this message is not an offer to sell or a solicitation of any investment products or other financial product or service, an official confirmation of any transaction, or an official statement of Merrill Lynch. Subject to applicable law, Merrill Lynch may monitor, review and retain e-communications (EC) traveling through its networks/systems. The laws of the country of each sender/recipient may impact the handling of EC, and EC may be archived, supervised and produced in countries other than the country in which you are located. This message cannot be guaranteed to be secure or error-free. This message is subject to terms available at the following link: http://www.ml.com/e-communications_terms/. By messaging with Merrill Lynch you consent to the foregoing.
--------------------------------------------------------
Sean Parker
2007-09-03 05:09:46 UTC
Permalink
Hello -

Can anyone enumerate some low-level behind-the-scenes
uses of CORBA in the S/W industry? For example, J2EE uses
CORBA's IIOP as it's protocol, and the GNOME system uses
ORBIX under the covers. Any others?

Thanks in advance
Sean Parker




God Bless
Sean Parker






____________________________________________________________________________________
Choose the right car based on your needs. Check out Yahoo! Autos new Car Finder tool.
http://autos.yahoo.com/carfinder/
Luke Deller
2007-09-03 06:25:18 UTC
Permalink
Post by Sean Parker
Can anyone enumerate some low-level behind-the-scenes
uses of CORBA in the S/W industry? For example, J2EE uses
CORBA's IIOP as it's protocol, and the GNOME system uses
ORBIX under the covers. Any others?
Just a small correction:

GNOME's ORB is called ORBit. ORBIX is an expensive commercial product sold by IONA.

Anyway I thought that GNOME is moving away from CORBA in favour of D-Bus?

Regards,
Luke.
**********************************************************************************************
Important Note
This email (including any attachments) contains information which is confidential and may be subject to legal privilege. If you are not the intended recipient you must not use, distribute or copy this email. If you have received this email in error please notify the
sender immediately and delete this email. Any views expressed in this email are not necessarily the views of IRESS Market Technology Limited.

It is the duty of the recipient to virus scan and otherwise test the information provided before loading onto any computer system.
IRESS Market Technology Limited does not warrant that the information is free of a virus or any other defect or error.
**********************************************************************************************
Sean Parker
2007-09-05 06:40:41 UTC
Permalink
Hello all -

Regarding my previous question I got a reply from one of
the developers on GNOME:


*****BEGIN RESPONSE FROM GNOME DEV****

Orbit's non-existent event channel has you wanting does it?

Just out of curiosity, anyone ever play around with ACE+TAO
in this context? It sure would give us a cleaner interface
if we didn't have to deal with d-bus at all, and instead
could leave the event bus in the hands of a generated code
engine.

Evan
Hello - What's the potential for using D-Bus in GNOME
instead of
CORBA?
Cheers Sean
God Bless Sean Parker
*****END RESPONSE FROM GNOME DEV*****
Hello -
Can anyone enumerate some low-level behind-the-scenes
uses of CORBA in the S/W industry? For example, J2EE uses
CORBA's IIOP as it's protocol, and the GNOME system uses
ORBIX under the covers. Any others?
Thanks in advance
Sean Parker
God Bless
Sean Parker
____________________________________________________________________________________
Choose the right car based on your needs. Check out
Yahoo! Autos new Car Finder tool.
http://autos.yahoo.com/carfinder/
God Bless
Sean Parker






____________________________________________________________________________________
Be a better Globetrotter. Get better travel answers from someone who knows. Yahoo! Answers - Check it out.
http://answers.yahoo.com/dir/?link=list&sid=396545469
Duncan Grisby
2007-09-06 21:49:10 UTC
Permalink
Post by Sean Parker
Can anyone enumerate some low-level behind-the-scenes
uses of CORBA in the S/W industry? For example, J2EE uses
CORBA's IIOP as it's protocol, and the GNOME system uses
ORBIX under the covers. Any others?
Have you seen the "Who is using omniORB" Wiki page?

http://www.omniorb-support.com/omniwiki/WhoIsUsingOmniorb

Cheers,

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Loading...