ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matthieu Riou" <matth...@offthelip.org>
Subject Re: Memory consumption of in-memory processes
Date Mon, 10 Dec 2007 23:25:17 GMT
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.

Cheers,
Matthieu

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
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message