Here goes with my first posting to this list.

I've been working on performance for an application that uses Tomcat, JBoss, JBossMQ, 
a couple of
queues and 1 message driven bean.  Response times were fine until I started loading 
the server
with multiple concurrent connections.  Until I did some work with it, the application 
slowed down
dramatically under reasonable loads (10 to 50 concurrent clients).  One of the 
problems I found
along the way looks to be a problem with the implementation of SpyObjectMessage.

I found that calls to ObjectMessage.getObject() and ObjectMessage.setObjet() were 
increasing
significantly in execution time under reasonable loads.  With a single client the 
times were
around 1/10th of a second but with 10 to 50 concurrent clients they went up to over a 
second.  I
found that it is faster to convert the data to XML, send it as a TextMessage and parse 
it on the
other side.

I can't explain this completely because the code for SpyObjectMessage in the version 
of JBossMQ
I'm using (JBoss-2.2.2_Tomcat-3.2.2) is not in the distribution (why is this?).  
However, looking
at the current code of SpyObjectMessage I see some code that definitely won't perform 
well.  The
problem is that setObject() serializes the object and getObject() deserializes it 
every time it is
invoked.  I realize that you need a serialized version for writeExternal(), but why 
must the
memory representation be serialized?  In my case it was not a persistant message 
anyway so
writeExternal() should never get called.  Is there something in the spec that says 
that each
client of an object message must get a different instance of the object?  That's the 
only reason I
can think of for this behavior.  If it's not required by the spec (which I don't think 
it is),
then the only affect of this serialization/deserialization is to slow things down, 
especially for
CPU bound apps.

The fix is trivial.  Store the Object as an Object and serialize or deserialize it 
only when
necessary in writeExternal() and readExternal().

Am I missing something here or is this a real problem?

Matt Cleveland




__________________________________________________
Do You Yahoo!?
Make international calls for as low as $.04/minute with Yahoo! Messenger
http://phonecard.yahoo.com/

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to