0
votes

We see paging in ActiveMQ Artemis after global-max-size is met. When paging starts the producer's write speed drops from 1000 range to around 50. Then we start consumers to quickly empty the queue (this is our test setup). However, until queue is fully empty performance of producers stays around 50. This is very critical because if this happens in production we would never recover the original performance until we stop producers and let consumers empty full queue. Why this behavior? Isn't broker go back to it's performance after half ( or may be 75% ) of queue is consumed?

When I think about queue, paging starts when the queue is full. So to get rid of paging I need to consume paged messages which I will consume last since it is a queue (FIFO). I think this is what happens here. After the broker leaves paging mode performance is restored to original.

1
Do you ever leave paging mode? If so, does performance improve after that? As long as you are paging then performance will be degraded. Consumers will have to consume enough for you to leave paging mode in order to have any chance of improving performance.Justin Bertram
Yes i leave paging mode. After broker leave paging mode performance restored to original. But the problem is this happens only after i consume all the messages. I have producer which producer at rate of 50 msg/s and consumer doing 20,000 batch for this test. Even with few more messages left in queue it give paging mode degraded performance. If i stop producer and let consumer empty q, then when producer restarts it gives good performance.Viraj

1 Answers

1
votes

As long as you are paging then performance will be degraded. Consumers will have to consume enough for you to leave paging mode in order to have any chance of improving performance.

If you don't want to enter paging mode you have two options:

  1. Give the broker more memory.
  2. Use a different <address-full-policy> (e.g. BLOCK or FAIL).