1
votes

I have these app servers running Tomcat enqueueing messages to local embedded brokers. These messages get forwarded to a stand alone broker. There is another machine connected to the stand alone broker consuming messages. The embedded broker and the stand alone broker are persistent.

I have this queue that grows faster in the embedded broker than messages getting forwarding to the stand alone broker. I can clearly see dispatch count is smaller than enqueue count. I see there is only one consumer connected for this queue on the embedded broker going to the stand alone broker and many consumers connected to the stand alone broker.

The queue size in the stand alone broker is almost 0 and CPU about 95% idle, meaning the stand alone broker is not maxing out and messages aren't piling on the stand alone broker but in the embedded brokers.

Is there a configuration parameter to make the stand alone broker increase the number of threads/consumers reading from the embedded brokers? Or to make embedded brokers send messages faster or more of them to the stand alone broker?

I'm running ActiveMQ 5.6.0 on all servers.

Any ideas?

1

1 Answers

1
votes

Looked at all optimization tutorials in ActiveMQ's site and the ones written by their contributors and disabled conduitSubscriptions, increased the amount of memory in the stand alone broker and increased the number of networkConector entries.

All of these changes made things better but still messages were forwarded slower than produced. The ultimate fix was my disk was not a high performance one, communication bandwidth was at 100%

While I wait to get a powerful RAID I made the stand alone broker non-persistent and I saw my queues drain in a couple of minutes. They stayed virtually flat ever since.