Okay,

 

I am answering my own question after some more research.

The problem was the consumerWindowsSize of the client consumers. This was set 
to 0 leading to no buffering at all and a server round-trip for each retrieve 
call.

After increasing window size to half a megabyte, the performance increased 
significantly and the clients were able to process fast enough.

 

This is sort of weird as we had the exact same configuration with HornetQ and 
no performance bottleneck with the same number of consumers.

Maybe someone of the old HornetQ crew has an idea why this is different. I know 
it’s a different product but many of the internals seem to be the same.

 

Kind regards

 

Sebastian

 

From: s.go...@inform-technology.de <s.go...@inform-technology.de> 
Sent: Montag, 22. April 2024 08:45
To: users@activemq.apache.org
Subject: Performance issue with Artemis 2.28

 

Good morning group.

 

We encounter a performance issue with ActiveMQ Artemis. The system was formerly 
a JBoss HornetQ installation and was migrated to AciveMQ Artemis and with 
HornetQ we had no issues at all

 

The performance issue is about a multicast address with a single queue that has 
10 consumers all residing in the same JVM.

This JVM uses a single ClientSessionFactory and each of the consuming worker 
threads has its own session.

The throughput is not as we had expected it to be and somewhere around 50 
messages/second.

After some profiling I found out, that most of the time the worker threads 
using that 10 consumers are standing in 
org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.receive 
(~111ms) while processing the message takes around 23ms.

 

My question is: can we have each consumer pick one of the messages in the queue 
while some messages are already processed?

or in other words: does Artemis deliver message 2 while message 1 is not yet 
acknowledged?

 

 

Kind regards

Sebastian Götz

 

Reply via email to