性能 – HornetQ吞吐量限制在4000 TPS而没有持久性

我在JBoss 6.1应用服务器中使用HornetQ.
我的应用程序(一个客户端应用程序,生成消息,以及消耗它们的JBoss应用程序)无法在服务器上处理超过4000 TPS,而CPU仍然是60%空闲.我试图删除持久性以检查我是否是磁盘绑定但它不会提高吞吐量.

似乎问题出在生产者方面.至少在监控队列大小时,它仍然非常小,这意味着消费者不是瓶颈.

我应该使用几个队列来提高效率吗?我已经阅读过HornetQ的性能调优文档,但找不到原因.
或者可能是因为我使用的是AUTO_ACKNOWLEDGE模式?我正在为生产者运行几个线程,这不应该影响很多.生产者JVM无论如何都不能使用超过1个CPU线程.我甚至试图运行我的生产者应用程序的几个实例,但它不会更快.
网络带宽很高(1 Gbps),我的消息非常小(<1 KB).
此外,生产者和消费者应用程序在同一服务器上运行.
HornetQ配置在2台服务器的JBoss集群中.

最佳答案
我能够通过使用几个队列来解决这个问题.通过使用JProfiler,我可以看到我的队列上的锁定,所有线程都在等待这些锁定.
我尝试了2个队列,我可以将性能提高一倍.所以现在我正在建立一组队列.

转载注明原文:性能 – HornetQ吞吐量限制在4000 TPS而没有持久性 - 代码日志