Hello all. Thank you for your insights.
* I’m using the core Java library.
* Consumers are being created once per poll but reused if there are
multiple inbound files to deal with. I create consumers like
try (final consumer = createConsumer(session, params)) {
// ...
}
so I expect them to be closed automatically.
* I don’t use JMS, but the core sessions are used one per thread. The
number of sessions opened and reported by Artemis doesn’t change over time.
* I cannot reproduce the issue yet. It’s a production cluster, so today I’m
going to set up my own playground.
Jan
From: Justin Bertram<mailto:[email protected]>
Sent: středa 9. srpna 2023 17:41
To: [email protected]<mailto:[email protected]>
Subject: Re: Hunting memory leaks
I echo Tim's recommendation to use the latest release, but I don't mean to
say that will certainly resolve the problem.
I can't say if you're doing anything wrong without more information. Can
you answer the following questions?
- What client library are you using?
- How often are consumers being created?
- Are consumers being closed properly once they are no longer needed?
- Are JMS sessions being used concurrently from multiple threads?
- Do you have a way to reproduce this that you can provide to me? A
reproducer would make diagnosing this issue much simpler.
Entries to the list of filter strings are added when a consumer is created
and removed when a consumer is closed so at first glance it appears you're
leaking consumers.
Justin
On Wed, Aug 9, 2023 at 7:07 AM Jan Šmucr <[email protected]> wrote:
> Hello.
> I’m using a simple master-slave Artemis 2.26.0 cluster, and I’m noticing
> heap usage growing more and more each day no matter the throughput. There’s
> about 670 sessions at the same time opened for producers and consumers.
> Consumers are polling queues on regular basis, some once a second (meaning
> 1s timeout), some less often. This is by design and cannot be altered. All
> client resources are being reused as much as possible. Usually there’s a
> thread pool and the threads have a session opened, and wait for tasks to be
> available to them.
> It appears to me that the more consumers there is the faster the server
> heap depletes.
> Now, I’m not very familiar with leak hunting apps, so all I have are tiny
> hints that it may have something to do with filter strings not being reused
> and/or thrown away when not needed any more. I don’t know if I can post a
> screenshot here so I uploaded it here: https://snipboard.io/LHifUK.jpg
> This is from a heap dump opened in JMC JOverflow plugin.
> Is there something obvious that I’m doing wrong? Do you have any clues on
> what is going on here?
> Thank you.
> Jan.
>
>