用于生成持久性文本消息的ActiveMQ性能

时间:2015-10-27 21:15:34

标签: activemq persistent

正如网页上所述 activemq-performance-module-users-manual我已尝试(在配备Windows 7操作系统和SSD驱动器的英特尔i7笔记本电脑上)在ActiveMQ队列上生成持久性消息的性能:

mvn activemq-perf:producer -Dproducer.destName=queue://TEST.FOO -Dproducer.deliveryMode=persistent

针对默认安装的activemq 5.12.1

我获得的性能是每秒300-400条消息。 在activemq-performance页面上,我一直在阅读更高的数字:

  

当在一个盒子上运行服务器而在另一个盒子上的单独VM中运行单个生产者和消费者线程时,使用单个主题我们使用1-2K消息获得大约21-22,000条消息/秒。

另一方面,当消息不持久时,生产者的性能增长到每秒49000条消息。 -Dproducer.deliveryMode=nonpersistent

当异步发送消息时。     -Dproducer.deliveryMode=persistent -Dfactory.useAsyncSend=true 我每秒发送大约23000条消息。

从我在这里看到stackoverflow-activemq-persistent-performance-on-different-operatiing-systems,它在不同操作系统上运行activemq时会有所不同。

有人可以给我一些提示,以便在编写持久的activemq消息时获得更好的性能吗?

1 个答案:

答案 0 :(得分:0)

发送持久性消息的性能完全取决于基于磁盘的IO,因为必须在代理向客户端发出消息发送完成信号之前将消息写入磁盘。磁盘越快,吞吐量就越高,其他条件相同。

要解决其中一些问题,您可以在事务批处理中发送持久性消息,以便发送本身完成并且同步点减少到事务边界。

根据文本消息的大小,您还可以通过使用压缩获得一些性能,可以通过ActiveMQConnectionFactory中的option打开它。