论坛首页 Java企业应用论坛

ActiveMQ 吞吐量如何优化

浏览 17088 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-11-29  
jacky_soft 写道
我用默认配置发topic消息能达到2000/m,你可能是代码问题或测试方式有问题


我测试的是queue 没有测试topic


发送和接收代码 都是amq 安装包 下example中的 ProducerTool和ConsumerTool,

没有专门去写代码测试


难道需要自己来优化消息发送代码,amq提供的不靠谱么?
0 请登录后投票
   发表时间:2011-11-29  
lvgang 写道
hornetq比amq性能要好,而且amq消息堆积超过100w性能则很差,楼主可以测试一下这个场景


恩,我测试了一下,如果消息累积的话 超过250W的时候 性能会有一个骤降的过程,咱两的值不一样,
可能是内存的设置不一样,两个同仁给推荐hornetq, 我去看看,谢谢啦


0 请登录后投票
   发表时间:2011-11-29  
hornetq性能比amq好是很明显的,单机我跑过5w/s,消息大小1k,但hornetq在消息堆积时处理策略有点问题,性能下降比较厉害,本来想自己写一个mq,不过收益不明显,就不写了
0 请登录后投票
   发表时间:2011-11-29  
堆消息对任何一个MQ来说都是一个难题,除了类似kafka这样的专门为了处理日志传输设计的MQ。

堆消息只有靠集群规模来扛住了。
0 请登录后投票
   发表时间:2011-11-29  
除了类似kafka这种大量日志传输的场景,一般的业务场景如果堆消息过多,应该考虑调整自己的业务处理流程了,例如消息分流,对消息种类细分,负载到多个broker里;增加消费者,提升消费能力。
mq不是数据库,存储消息不是它的强项。就算是数据库,数据多了,效率也会下降。
0 请登录后投票
   发表时间:2011-11-29  
至于hornetq 和activemq的性能对比,SPEC JMS2007 的结果可以做下参考:
http://www.spec.org/jms2007/results/
0 请登录后投票
   发表时间:2011-11-30  
把connector换成NIO试试
0 请登录后投票
   发表时间:2011-12-02   最后修改:2011-12-02
我在测试这个东西时候单台关掉flowControl和MEM LIMIT选项,JDBC持久化数据的情况下,开100个线程 + pool,每条1k的消息能打到 7000/s的发送速度,100万数据很快发完,采用sessoin transcated模式发送。simple auth认证,tcp协议

官网的jaas auth那个例子超级影响性能, 可能跟我配置不熟悉有关系。

不过现在出现的问题是,用activemq给的conn pool, 运行一段时间后, send一个消息的时间会越来越长,最后达到难以容忍的几十秒。 服务器所有的线程都被它挂起了。最开始以为是mem limit 配置的问题, 取消掉后, 很长时间内正常了,但是现在问题在一个月后又出现了。 悲摧啊。准备试试楼上的nio



0 请登录后投票
   发表时间:2011-12-30  
可以用network模式的cluster来提高吞吐量,master/slave只是用来做故障恢复用的。。。
0 请登录后投票
   发表时间:2011-12-30  
jacky_soft 写道
jacky_soft 写道
我用默认配置发topic消息能达到2000/m,你可能是代码问题或测试方式有问题



如果用多线程+for循环+非持久化消息   顶峰的时候达到3w/m以上



topic 默认是不持久化的。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics