您的位置:首页 > 其它

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

2015-12-23 11:12 281 查看
转载来自:http://setting.iteye.com/blog/989593

影响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
<!--StartFragment -->

根据JMS规范,消息是不可变的。send的时候,会自动的添加一些属性。有时候,可能会重用,或者多线程处理。为了不影响消息的不可变性,发送的时候,先复制一份,这样,发送时处理的消息对象和你的代码持有的消息对象,是两个不同对象了。相互之间就不会互相影响了。

一般情况下,这个选项可以关闭,从而获得一定的性能提升。

9、consumer端,获取消息时候的prefetchSize设置。 一定范围情况下,一次预获取越大,总体性能越好。

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

第7条参见 http://netcomm.iteye.com/blog/421163
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: