Hi, you can find some additional tips for performance tuning here:
http://activemq.apache.org/performance-tuning.html and http://fusesource.com/wiki/display/ProdInfo/FUSE%20Message%20Broker%20Performance%20Tuning%20Guide Cheers -- Dejan Bosanac ----------------- FuseSource - The experts in open source integration and messaging. Email: dej...@fusesource.com Web: http://fusesource.com Twitter: http://twitter.com/dejanb ActiveMQ in Action - http://www.manning.com/snyder/ Blog - http://www.nighttale.net On Wed, Dec 15, 2010 at 3:41 PM, Stanislaw Kogut <sko...@sistyma.net> wrote: > Hello. > > I'm currently evaluating ActiveMQ as a message broker for our service. We > need scalable, transacted, low-latency message broker, but ActiveMQ shows > not very good results to me. > > Config: ActiveMQ 5.4.2 with nio:// transport, KahaDB persistence adapter and > data directory on tmpfs filesystem (to get rid of disk performance impact). > > In details: With persistence enabled and commiting every message sent to > broker we have about 2k messages/s on producer side, and similar consuming > speed with one producing thread. > It also has good latency - about 5 milliseconds to deliver message, but 2k > msg/s can be slow in future, so I'm trying to commit messages after some > count of them sent, for example after every 100 messages. This shows better > throughput, about 10k messages/s, but now consumer side looks slow. Also, > latency is increased because time to fill this "100 messages" cap. > > Also, consumer side is not able to consume all these messages on this rate > and queue length grows. > > It is very possible also, I will have more than one producer for one queue > because of application design. I also test this scenario and producers are > relatively fast, but consumer become very slow, receiving 1-2 messages per > second. With enabled producer flow-control broker can stop producers and > serve consumer better, but it has very bad impact on latency as producer > should wait for broker to acknowledge messages, preventing new data from > being sent. > > > Is there is a way to consume messages from queue faster? I'm tried both > implementing MessageListener and MessageConsumer.receive(), but both show > same result. Usage of vmCursor or prefetching in broker makes no changes to > situation. > > Also, is there any topology for distirbuting one ActiveMQ queue to more than > one machine without big latency impact to increase it's throughput? > > -- > Regards, > Stanislaw Kogut > Sistyma LLC >