ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From <Juergen.Schumac...@empolis.com>
Subject RE: Memory consumption of in-memory processes
Date Tue, 11 Dec 2007 08:05:38 GMT

thank you so far, I will check this today.
However, I do not use one-way messages. All partner incovations return
result messages. So maybe I'm still doing something wrong with releasing
the messages - for my experiments, I basically hacked together an own simple
integration layer, maybe I forgot something. I'll check this, too, thanks 
for your hint.


-----Original Message-----
From: matthieu.riou@gmail.com [mailto:matthieu.riou@gmail.com] On Behalf Of Matthieu Riou
Sent: Tuesday, December 11, 2007 12:25 AM
To: user@ode.apache.org
Subject: Re: Memory consumption of in-memory processes

Hi Juergen,

So far your ODE usage sounds okay to me, no abuse there :) We're usually cleaning up the message
exchanges using the release() method after each invocation (look for MessageExchange.release()
in ODEService if you want to see the code). But after your e-mail I've spent some time reviewing
the cleanups and there was one missing for one-way incoming messages. I could swear this had
been fixed before but it was either on a wrong branch or I'm having memory issues. Does your
process relies on one-ways? If so that probably explains it. I've committed a fix, you'll
probably want to try again after a SVN update.

I also agree that the the time to live should be configurable. I've added a property for this,
just set ode-axis2.mex.inmem.ttl in your ode-axis2.properties. The provided value should be
in ms. Also be careful not to give a too small value or message exchanges are going to be
nuked when they're not done yet. So generally speaking this value should only be changed in
high throughput type of scenarios.

Let me know how all of this goes.


On Dec 10, 2007 5:57 AM, <Juergen.Schumacher@empolis.com> wrote:

> Hello,
> I am new to BPEL and ODE, therefore: Sorry, if I abuse ODE for 
> something it is not designed for.
> I have done some performance/throughput tests with ODE and ran into 
> some memory problems when deploying my process for in-memory 
> execution. The problem is that 
> org.apache.ode.bpel.memdao.BpelDAOConnectionImpl keeps already 
> processed MessageExchangeDAOImpl objects in memory for too long. In 
> the cleanupDeadWood() method, they are removed only if they are older 
> than 10 minutes and this method is called only after the successful 
> creation of a new MExDAO, so within a short time my experiment ends 
> with OutOfMemory.
> If I just change the TIME_TO_LIVE constant to a value of 3000 or 10000 
> ms, the test completes without problems (and with great performance - 
> much better than I expected, actually :-) Currently I use the code 
> from the SVN trunk.
> So I have two questions:
> - Would it be possible to remove these MExDAO objects from memory  
> immediately after they have been processed? Or at least after the  
> process instance that created them, is terminated? I had a look  at 
> the code, but I found no immediate way to do it. Or would this  be in 
> opposite to some principals of BPEL processing? I noticed that  these 
> objects are also not removed from the persistence database, if  the 
> process is not executed in-memory, so the database grows quite  large, 
> too. How should they be removed from this database?
> - If not, would it be possible to make the TIME_TO_LIVE configurable?
> Thanks in advance!
> --
> Juergen Schumacher
> empolis GmbH | Europaallee 10 | 67657 Kaiserslautern | Germany 
> http://www.empolis.com

View raw message