锁定老帖子 主题:ActiveMQ 吞吐量如何优化
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-29
jacky_soft 写道 我用默认配置发topic消息能达到2000/m,你可能是代码问题或测试方式有问题
我测试的是queue 没有测试topic 发送和接收代码 都是amq 安装包 下example中的 ProducerTool和ConsumerTool, 没有专门去写代码测试 难道需要自己来优化消息发送代码,amq提供的不靠谱么? |
|
返回顶楼 | |
发表时间:2011-11-29
lvgang 写道 hornetq比amq性能要好,而且amq消息堆积超过100w性能则很差,楼主可以测试一下这个场景
恩,我测试了一下,如果消息累积的话 超过250W的时候 性能会有一个骤降的过程,咱两的值不一样, 可能是内存的设置不一样,两个同仁给推荐hornetq, 我去看看,谢谢啦 |
|
返回顶楼 | |
发表时间:2011-11-29
hornetq性能比amq好是很明显的,单机我跑过5w/s,消息大小1k,但hornetq在消息堆积时处理策略有点问题,性能下降比较厉害,本来想自己写一个mq,不过收益不明显,就不写了
|
|
返回顶楼 | |
发表时间:2011-11-29
堆消息对任何一个MQ来说都是一个难题,除了类似kafka这样的专门为了处理日志传输设计的MQ。
堆消息只有靠集群规模来扛住了。 |
|
返回顶楼 | |
发表时间:2011-11-29
除了类似kafka这种大量日志传输的场景,一般的业务场景如果堆消息过多,应该考虑调整自己的业务处理流程了,例如消息分流,对消息种类细分,负载到多个broker里;增加消费者,提升消费能力。
mq不是数据库,存储消息不是它的强项。就算是数据库,数据多了,效率也会下降。 |
|
返回顶楼 | |
发表时间:2011-11-29
至于hornetq 和activemq的性能对比,SPEC JMS2007 的结果可以做下参考:
http://www.spec.org/jms2007/results/ |
|
返回顶楼 | |
发表时间:2011-11-30
把connector换成NIO试试
|
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |
发表时间:2011-12-30
可以用network模式的cluster来提高吞吐量,master/slave只是用来做故障恢复用的。。。
|
|
返回顶楼 | |
发表时间:2011-12-30
jacky_soft 写道 jacky_soft 写道 我用默认配置发topic消息能达到2000/m,你可能是代码问题或测试方式有问题
如果用多线程+for循环+非持久化消息 顶峰的时候达到3w/m以上 topic 默认是不持久化的。 |
|
返回顶楼 | |