影响ActiveMQ性能的几个重要因素

影响ActiveMQ性能的几个重要因素

Queue
1、Send/dispatch Async 影响非常大

     同步异步的发送和投递,都非常影响吞吐量。另外,SystemUsage和PFC流控对同步发送有直接影响。
2、Not transacted 去掉了记录redo日志
3、Auto_ACK/Optim_ACK 优化确认

     减少交互次数
4、Non-persistence 持久化消息,跟下面几点有关

    持久化和非持久化,也是数量级的影响,毕竟为了提高可靠性,使用数据库或文件来存消息,开销非常大。
5、pendingQueuePolicy/vmQueueCursor 决定了消息存储+发送模式,影响很大

    内存最快,文件和jdbc方式更安全,但是非常慢。。。
6、producerFlowControl/memoryLimit  可能会直接block掉producer

      vmCursor+非持久时,直接变成一个内存MQ,为了不爆掉jvm,在消息积压到指定数量的时候,PFC会阻止生产消息。
7、fast/slow consumer      决定了消息处理模式

     跟上面几点有关系。

8、在connection或connectionFactory上关闭掉 copyMessageOnSend

根据JMS规范,消息是不可变的。send的时候,会自动的添加一些属性。有时候,可能会重用,或者多线程处理。为了不影响消息的不可变性,发送的时候,先复制一份,这样,发送时处理的消息对象和你的代码持有的消息对象,是两个不同对象了。相互之间就不会互相影响了。
一般情况下,这个选项可以关闭,从而获得一定的性能提升。
9、consumer端,获取消息时候的prefetchSize设置。 一定范围情况下,一次预获取越大,总体性能越好。

第5、6条参见 http://netcomm.iteye.com/blog/470585
第7条参见 http://netcomm.iteye.com/blog/421163

你可能感兴趣的:(activemq,ActiveMQ,ITeye,Blog)