影响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
影响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
相关文章推荐
- 接口
- 验收总结
- Jmeter JDBC 链接mysql
- JSP session与cookie
- 破解Windows 2008 R2管理员密码的两种方法
- SimpleMembershipProvider 的 MySql 实现
- Android知识点总结
- 利用tomcat-redis-session-manager做session同步时自定义类对象属性保存不上的解决方法
- js实现去除首尾空格
- Spring入门Blog[二、Ioc控制反转集合注入和Scope]
- Xcode编译器里有鬼 – XcodeGhost样本分析
- 数据库 不可重复读与幻读的区别
- easyui datagrid checkbox
- 1.mybatis介绍
- java序列化与反序列化
- layer文档
- 几个经常用到的字符串的截取(java)
- 【geoip】geoip操作GeoLiteCity.dat
- 解决ubuntu 的vim中文乱码问题
- Play framework后台处理页面传过来的AJAX-JSON数据并给出响应