我正在使用嵌入在 JBoss 6.1 应用服务器中的 HornetQ。我的应用程序(客户端应用程序、生成消息和使用它们的 JBoss 应用程序)在 CPU 仍处于 60% 空闲状态时无法在服务器上处理超过 4000 TPS。我试图删除持久性以检查我是否受磁盘限制,但它并没有提高吞吐量。似乎问题出在生产者方面。至少在监控队列大小时,它保持非常小,这意味着消费者不是瓶颈。我应该使用多个队列来提高效率吗?我已经阅读了 HornetQ 的性能调优文档,但找不到原因。或者可能是因为我使用的是 AUTO_ACKNOWLEDGE 模式?我正在为生产者运行几个线程,这应该不会产生太大影响。无论如何,生产者 JVM 不能使用超过 1 个 CPU 线程。我什至尝试运行我的生产者应用程序的几个实例,但它并没有运行得更快。网络带宽很高(1 Gbps),而我的消息非常小(此外,生产者和消费者应用程序运行在同一台服务器上。HornetQ 配置在 2 台服务器的 JBoss 集群中。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 我能够通过使用多个队列来解决这个问题。通过使用 JProfiler,我可以看到队列上的锁,并且所有线程都在等待这些锁。我尝试了 2 个队列,我可以将性能提高一倍。所以现在我正在放置一组队列。关于performance - HornetQ 吞吐量限制为 4000 TPS,没有持久性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16103411/ (adsbygoogle = window.adsbygoogle || []).push({}); 10-10 07:35